【问题标题】:How to start an Intent if context is not Activity Context but Application Context如果上下文不是活动上下文而是应用程序上下文,如何启动 Intent
【发布时间】:2012-03-03 11:49:53
【问题描述】:

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

public void onReceive(Context context, Intent intent) {

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

有没有办法使用应用程序上下文启动意图?

【问题讨论】:

    标签: android android-intent android-context


    【解决方案1】:

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

    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);  
    }
    

    【讨论】:

    • 这个答案虽然有效,但在回答问题时含糊不清。为了使用应用程序上下文调用 startActivity,请包含标志 FLAG_ACTIVITY_NEW_TASK。还要考虑将名称从上下文更改为 appContext,以便清楚您期望的上下文。
    • 为什么我们需要提供 NEW_TASK 标志?因为我尝试从应用程序上下文没有这个标志开始一个活动,它工作正常。
    【解决方案2】:

    是的,只需使用上下文并从该上下文调用 startActivity() 方法。

    【讨论】:

    • 这是不正确的;除非 Intent 包含 FLAG_ACTIVITY_NEW_TASK 标志,否则不允许应用程序上下文启动活动。
    • 在 Android 馅饼上 FLAG_ACTIVITY_NEW_TASK 没有帮助
    • @AnandKhinvasara 你对开发者文档有引用吗?还是这是一种无证行为?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 2011-11-10
    • 2019-11-07
    • 1970-01-01
    • 2023-02-08
    相关资源
    最近更新 更多