Xamarin.Android - запуск службы при загрузке завершен - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь запустить службу, когда мое устройство загружается, но служба никогда не запускается.

Я добавил:

<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 голосов
/ 29 ноября 2018

Вы можете попробовать это:

[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
    }
}
...