Поскольку неявные широковещательные приемники не работают с Android 8.0, необходимо зарегистрировать свой приемник по коду, а также в манифесте.
Выполните следующие действия:
<receiver android:name=".MyReciever">
<intent-filter>
<intent-filter>
<action android:name="android.intent.action.ACTION_USER_PRESENT" />
<action android:name="android.intent.action.ACTION_BOOT_COMPLETED" />
<action android:name="android.intent.action.ACTION_SCREEN_ON" />
</intent-filter>
</intent-filter>
</receiver>
- Создайте класс получателя и добавьте ваши коды
public class MyReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("My Reciever","is intent null => " + (intent == null));
Log.d("My Reciever",intent.getAction()+"");
}
}
- Создайте службу и зарегистрируйте в ней получателя
public class MyService extends Service {
MyReceiver receiver = new MyReceiver();
@Override
public IBinder onBind(Intent intent) { return null; }
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
registerReceiver(receiver);
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
}
- Не забудьте указать службу в манифесте
<service android:name=".MyService"/>
Чтобы ваша трансляция работала, вы должны зарегистрировать ее в службе,А чтобы поддерживать работу службы, вы можете использовать такие инструменты, как alarm managers
, jobs
и т. Д., Которые не связаны с этим вопросом.