如果上下文不是活动上下文而是应用程序上下文,如何启动 Intent
Posted
技术标签:
【中文标题】如果上下文不是活动上下文而是应用程序上下文,如何启动 Intent【英文标题】:How to start an Intent if context is not Activity Context but Application Context 【发布时间】:2012-03-03 11:49:53 【问题描述】:我正在尝试从扩展 BroadcastReceiver 的类开始一个活动。
public void onReceive(Context context, Intent intent)
问题在于参数上下文是应用程序上下文而不是活动上下文。
有没有办法使用应用程序上下文启动意图?
【问题讨论】:
【参考方案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 你对开发者文档有引用吗?还是这是一种无证行为?以上是关于如果上下文不是活动上下文而是应用程序上下文,如何启动 Intent的主要内容,如果未能解决你的问题,请参考以下文章
如何获取所选列表视图项中的id以打开上下文菜单并通过下一个活动来实现目标。
SharedPreferences 应用程序上下文与活动上下文
严重:上下文 [/javaproj] 启动因先前的错误而失败?
在 MVP 模式中,了解活动/上下文的演示者是不是是个坏主意?