Начать действие в onReceive загрузки Complete BroadcastReceiver в ОС Android 9

Активность не запускается из широковещательного приемника завершения загрузки onReceive даже с использованием Intent.FLAG_ACTIVITY_NEW_TASK не помогает и по-прежнему возникает та же ошибка.

Вызвано: android.util.AndroidRuntimeException: для вызова startActivity() из-за пределов контекста Activity требуется флаг FLAG_ACTIVITY_NEW_TASK. Это действительно то, что вы хотите?

public void onReceive(Context context, Intent intent) {
super.onReceive(context,intent);
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED) || 
  intent.getAction().equals(Intent.ACTION_LOCKED_BOOT_COMPLETED)){
  Intent mainActivityIntent = MainActivity.newIntent(context);
  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  context.startActivity(mainActivityIntent);} 
}

person Tallal Tasawar    schedule 15.03.2019    source источник
comment
Я пытаюсь это сделать на Android 9, и все та же ошибка, но этот код хорошо работает на Android 7.   -  person Tallal Tasawar    schedule 15.03.2019


Ответы (1)


Вы устанавливаете флаг для другого намерения.
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

public void onReceive(Context context, Intent intent) {
super.onReceive(context,intent);
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED) || 
  intent.getAction().equals(Intent.ACTION_LOCKED_BOOT_COMPLETED)){
  Intent mainActivityIntent = MainActivity.newIntent(context);
  // set flag on mainActivityIntent
  mainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  context.startActivity(mainActivityIntent);} 
}
person Binary Baba    schedule 16.03.2019