Android 我的启动接收广播接收器在启动时未启动
我用Xamarin.Android编写了一个广播接收器,非常完美,但我不知道为什么在设备启动时它不会被调用,有人能告诉我我的代码有什么问题吗Android 我的启动接收广播接收器在启动时未启动,android,xamarin,xamarin.android,broadcastreceiver,Android,Xamarin,Xamarin.android,Broadcastreceiver,我用Xamarin.Android编写了一个广播接收器,非常完美,但我不知道为什么在设备启动时它不会被调用,有人能告诉我我的代码有什么问题吗 [BroadcastReceiver(Enabled = true, Exported = true)] [IntentFilter(new[] { Intent.ActionBootCompleted })] public class BootReceiver : BroadcastReceiver { public override void
[BroadcastReceiver(Enabled = true, Exported = true)]
[IntentFilter(new[] { Intent.ActionBootCompleted })]
public class BootReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
if (intent.Action.Equals("android.intent.action.BOOT_COMPLETED"))
{
Toast.MakeText(context, "1 Received intent! You can run your background task here.", ToastLength.Short).Show();
}
}
}
我编写了如上所示的广播接收器,但它无法在启动时启动。s
许可
接受者
这些是参考链接
及
您不必显式设置Exported=true,因为您已经至少有一个intent过滤器,因此它是冗余的。您的接收者也缺少您的许可,这是必需的。不要手动编辑AndroidManifest.xml,因为它将被Xamarin覆盖 您还必须配置手机正在运行的任何电池优化服务。您必须禁用此应用程序的电池优化,否则它将无法接收任何广播 安装应用程序后,您必须至少从图标打开它一次,否则它将由Android系统进行任何广播 示例代码:
Chrome应该安装在移动设备上,您将在其上运行此示例代码,重新启动设备后,请不要让其休眠,并至少等待2分钟。之后,它将显示一条toast消息,并在Chrome浏览器中打开一个网站。您在logcat中是否遇到一些错误?我没有收到错误消息,
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver android:name=".BootCompletedReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
namespace AZ.Sample.Notifications
{
using System;
using Android;
using Android.App;
using Android.Content;
[BroadcastReceiver(Enabled = true, Permission = Manifest.Permission.ReceiveBootCompleted)]
[IntentFilter(new[] { Intent.ActionBootCompleted }, Priority = (int)IntentFilterPriority.LowPriority, Categories = new[] { Intent.CategoryDefault })]
public class BootBroadcastReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
Toast.MakeText(Android.App.Application.Context, "Broadcast Received", ToastLength.Long).Show();
var uri = Android.Net.Uri.Parse("http://www.google.com");
var intent1 = new Intent(Intent.ActionView, uri);
intent1.AddFlags(ActivityFlags.NewTask);
intent1.SetPackage("com.android.chrome");
try
{
context.StartActivity(intent1);
}
catch (ActivityNotFoundException ex)
{
ex.PrintStackTrace();
//Chrome browser not installed
intent.SetPackage(null);
context.StartActivity(intent1);
}
}
}
}