Xamarin.Android-启动完成后启动服务

时间:2018-11-28 22:21:42

标签: c# android xamarin android-intent broadcastreceiver

我试图在设备启动时启动服务,但是该服务从未启动。

我添加了:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

到AndroidManifest.xml。我的BroadcastReceiver看起来像这样:

[BroadcastReceiver]
[IntentFilter(new[] { Intent.ActionBootCompleted })]
public class BootReceiver : BroadcastReceiver
{
    public override void OnReceive(Context context, Intent intent)
    {
        var start = new Intent(context, typeof(AlertSyncService));
        start.AddFlags(ActivityFlags.NewTask);
        context.StartService(start);
    }
}

我已确认我的服务不是问题(通过在单击按钮时启动相同的服务进行了测试-正常)。问题绝对是BroadcastReceiver从未接收到该事件。我还确保在重新启动之前打开应用程序一次-在类似的问题中,我认为这是必要的,因为应用程序以“停止状态”安装。

有人有什么想法可能导致此方法不起作用吗?我对此还比较陌生,因此很可能错过了一些显而易见的事情!

谢谢

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

[BroadcastReceiver(Enabled = true, Exported = true, DirectBootAware = true)]
[IntentFilter(new string[] {
    Intent.ActionBootCompleted, Intent.ActionLockedBootCompleted, "android.intent.action.QUICKBOOT_POWERON"
})]
public class BootReceiver: BroadcastReceiver {
    public override void OnReceive(Context context, Intent intent) {
        //Do something
    }
}