【问题标题】:Start Activity in onReceive of a Boot Complete BroadcastReceiver in Android OS 9在 Android OS 9 的启动完成广播接收器的 onReceive 中启动 Activity
【发布时间】:2019-03-15 07:47:54
【问题描述】:

即使使用 Intent,活动也不会从启动完成的 onReceive 的广播接收器开始。FLAG_ACTIVITY_NEW_TASK 没有帮助,仍然会出现相同的错误。

原因:android.util.AndroidRuntimeException:从 Activity 上下文外部调用 startActivity() 需要 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);} 
}

【问题讨论】:

  • 我正在 Android 9 上尝试此操作,但仍然出现相同的错误,但此代码在 Android 7 上运行良好。

标签: android broadcastreceiver bootcompleted


【解决方案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);} 
}

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多