如果上下文不是Activity Context而是Application Context,如何启动Intent

39

我正在尝试从一个扩展BroadcastReceiver类的类中启动一个Activity。

public void onReceive(Context context, Intent intent) {

问题在于参数 context 使用的是应用程序上下文而不是活动上下文。

是否有一种方法可以使用应用程序上下文启动意图?

1个回答

57

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

public void onReceive(Context context, Intent intent) { 
    
    Intent intent = new Intent();   
    intent.setClass(context, xxx.class); 
    intent.setAction(xxx.class.getName()); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 
    context.startActivity(intent);  
}

34
这个答案虽然可行,但回答问题时含糊不清。 为了使用应用程序上下文调用startActivity,请包括FLAG_ACTIVITY_NEW_TASK标志。 另外,考虑将名称从context更改为appContext,这样就清楚了您期望的上下文。 - Alon
3
为什么我们需要提供NEW_TASK标志?因为我尝试从应用程序上下文启动活动,但没有使用此标志,它可以正常工作。 - MNassar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接