如果上下文不是活动上下文而是应用程序上下文,如何启动Intent

Mar*_*zzi 25 android android-intent android-context

我正在尝试从扩展BroadcastReceiver的类开始一个活动.

public void onReceive(Context context, Intent intent) {
Run Code Online (Sandbox Code Playgroud)

问题是参数上下文是Application上下文而不是Activity上下文.

有没有办法使用Application上下文启动intent?

SBJ*_*SBJ 39

以下是如何使用上下文调用另一个活动的示例代码,根据您的要求设置标志:

public void onReceive(Context context, Intent intent) { 

  Intent startActivity = new Intent();  
  startActivity.setClass(context, xxx.class); 
  startActivity.setAction(xxx.class.getName()); 
  startActivity.setFlags( 
              Intent.FLAG_ACTIVITY_NEW_TASK 
              | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 
  context.startActivity(startActivity); 
}
Run Code Online (Sandbox Code Playgroud)

  • 这个答案虽然有效但在回答这个问题时含糊不清.要使用应用程序上下文调用startActivity,请包含标志FLAG_ACTIVITY_NEW_TASK.还要考虑将名称从上下文更改为appContext,以便明确您期望的上下文. (24认同)
  • 为什么我们需要提供 NEW_TASK 标志?因为我尝试从应用程序上下文_没有_这个标志启动一个活动,并且它工作得很好。 (3认同)