«Перезагрузка приемника» не работает android [Xamarin.Android] - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь реализовать широковещательный приемник, который получает трансляцию, когда устройство было перезагружено, но не работает (он должен отправить мне тост после перезагрузки устройства) со следующим кодом:

Вещательный приемник:

    [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"/>

Надеюсь, помощь, спасибо

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Я думаю, что есть проблема с вашим широковещательным приемником, выполните следующие действия и посмотрите, работает ли он:

Добавьте запись манифеста для разрешения загрузки

<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();
        }
    }
}

Удачи, не стесняйтесь вернитесь, если у вас есть вопросы

0 голосов
/ 06 февраля 2020

Я решил проблему, ответ @FreakyAli также помог в получении решения

Создать службу:

[Service(Name = "com.companyname.app.RebootService")]
    public class RebootService : Service
    {
        public override void OnCreate()
        {
            base.OnCreate();
        }

        public override IBinder OnBind(Intent intent)
        {
            return null;
        }
        public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
        {
            Toast.MakeText(this, "Service STARTED!", ToastLength.Long).Show();
            return StartCommandResult.Sticky;
        }

        public override void OnDestroy()
        {
            base.OnDestroy();

            Toast.MakeText(this, "Service STOPED", ToastLength.Long).Show();
        }
    }
}

Создать BroadcastReciver:

 [BroadcastReceiver(Enabled =true, Name ="com.companyname.Sortex.RebootReceiver")]
        [IntentFilter(new[] { Intent.ActionBootCompleted })]
        public class RebootReceiver : BroadcastReceiver
        {
            public override void OnReceive(Context context, Intent intent)
            {
            }
        }

регистрация службы и BroadcastReceiver на AndroidManifest. xml

<service android:name="com.companyname.app.RebootService"/>
<receiver android:name="com.companyname.app.RebootReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

Вызов службы по методу OnReceive приемника Broadcast:

Intent serviceIntent = new Intent(context, typeof(RebootService));
context.StartService(serviceIntent);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...