Вы не можете зарегистрировать широковещательный приемник в manifest.xml от Oreo.Вы можете видеть Изменения в поведении Android 8.0
Приложения не могут использовать свои манифесты для регистрации в большинстве неявных трансляций (то есть трансляций, которые не предназначены специально для приложения).
Решение
Вместо этого зарегистрируйте своего получателя в связанной деятельности.Вот так.
public class MainActivity extends AppCompatActivity {
BroadcastReceiver receiver;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction("android.intent.action.LOCKED_BOOT_COMPLETED");
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// todo
}
};
registerReceiver(receiver, filter);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (receiver != null)
unregisterReceiver(receiver);
}
}
Вы можете добавить действие в виде строки, как в манифесте, если вы не нашли соответствующую строку констант.