android - “重新启动接收器”无法正常工作 android [Xamarin.Android]
问题描述
我正在尝试使用以下代码实现一个广播接收器,该接收器在设备重新启动时获取广播,但无法正常工作(它应该在设备重新启动时向我发送祝酒词):
广播接收器:
[BroadcastReceiver]
public class RebootReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
if (Intent.ActionBootCompleted.Equals(intent.Action))
{
Toast.MakeText(
context,
"Your app has been rebooted!",
ToastLength.Long).Show();
}
}
}
清单.xml
<receiver android:name=".RebootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
以及清单内的权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
希望帮助,谢谢
解决方案
我认为您的广播接收器有问题,请按照以下步骤操作,看看它是否有效:
添加启动权限的清单条目
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
添加接收者并使用完整的限定名称:
<receiver android:name="com.yourpackagename.app.BootBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
为您在清单中使用的完全限定名称添加一个Name
参数BroadcastReceiverAttribute
[BroadcastReceiver(Name = "com.yourpackagename.app.BootBroadcastReceiver", Enabled = true)]
[IntentFilter(new[] { Intent.ActionBootCompleted })]
public class BootBroadcastReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
if (Intent.ActionBootCompleted.Equals(intent.Action))
{
Toast.MakeText(
context,
"Your app has been rebooted!",
ToastLength.Long).Show();
}
}
}
祝您好运,如果您有任何疑问,请随时回复
推荐阅读
- office-js - Office 加载项图标不显示在桌面应用程序上
- c++ - 当 /usr/local 中存在普通 brew 包时,针对 Keg (/usr/local/opt) 构建/链接
- asp.net - 中间件和 Blazor 组件中的范围
- javascript - 如何将参数从解析的 json 值传递给 onclick 函数?
- json - Redshift 转换:json 键/值到关系
- tfs - 一些 Azure Devops 提交者/作者电子邮件具有 guid 而不是域
- c++ - 通过方法参数传递数学运算符的最佳方法
- php - 将 preg_grep() 与 PREG_GREP_INVERT 一起使用时收到警告
- c# - HyperV WMI 在 c# 中应用快照
- c++ - LNK2001:未解析的外部符号 threadIdx