当前位置: 首页 > 知识库问答 >
问题:

在Android OS 9中启动完整广播接收器的onReceive中启动活动

冯鸿哲
2023-03-14

即使使用Intent,该活动也不会从引导完成的onRecture的广播接收器开始。FLAG_ACTIVITY_NEW_TASK没有帮助,仍然经历同样的错误。

原因:Android。util。AndroidRuntimeException:从活动上下文外部调用startActivity()需要标志_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);} 
}

共有1个答案

上官扬
2023-03-14

您正在为不同的意图设置标志。
intent.add标志(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);} 
}
 类似资料:
  • (与我刚刚发布的另一个问题略有不同,如果这违反了规则,请道歉) 在我的活动1中,我正在设置一些共享首选项,接下来我将通过意图启动另一个活动2,并从中设置一些文本视图。。。这一切都很好。 这就是我的问题。在我的第一个活动1中,我有一个带有挂起意图的警报管理器,这个挂起意图是一个用于锁定手机的广播接收器,然后启动活动2。这个活动和上面提到的第二个活动是一样的。但是,当此活动从启动时,没有任何文本视图从

  • 每当它收到消息时,它都会在后台运行,即使应用程序没有运行,它也应该从后台启动活动

  • 我目前正在使用SharedReferences跟踪通过AlarmManager启动的BroadcastReceiver中要执行工作的项列表。除了一个特定的场景外,一切都很好。当我触发一个新项目来执行工作时,让它完成工作,然后删除该项目(全部通过SharedReferences编辑),它在应用程序运行时工作得很好。当列表中没有任何内容,我打开任务管理器并终止应用程序时,该项突然出现在Broadcas

  • 我需要一些帮助来理解当我可以期望我的广播接收器在清单中注册时工作,而不是必须从正在运行的活动或服务中注册。 因此,例如,如果我用以下意图筛选器注册了一个独立的接收器,那么它在没有对它的服务/活动引用的情况下就能正常工作: 但是,如果将替换为,则不会触发接收器(Android文档) 从我在这个站点上发现的,你必须从一个已经运行的活动或服务中注册这个接收器,以使其工作(Post)。 > 有人能告诉我,

  • 问题内容: 我正在尝试从广播接收器启动状态栏通知,然后从另一个广播接收器停止它,但是出现问题。当USB连接时,我想在状态栏中启动通知,然后当USB断开连接时,我想停止它。我已经设置了两个接收器,并且正在努力从接收器中启动和停止一个接收器,这是代码我目前有 我的代码唯一的错误是该行,该错误仅表明getSystemService未定义,并且它想使该方法(我认为这意味着接收者不像活动那样支持该方法),所

  • 我的应用程序的MainActivity从用户那里获取一些数据来计算他/她的BMI和BMR,并将这些数据用于应用程序的主要部分,即另一个名为DailyActivity的活动。我希望这样,用户第一次启动应用程序时,它会要求提供数据。但在第一次之后,每次用户启动应用程序时,都应使用之前输入的数据直接启动DailyActivity。(按下后退按钮也不应显示MainActivity)。我如何实现这一点?