Android P新特性:强制执行 FLAG_ACTIVITY_NEW_TASK 要求

在 Android P 中,不能从非 Activity 环境中启动 Activity,除非传递 Intent 标志 FLAG_ACTIVITY_NEW_TASK。 如果您尝试在不传递此标志的情况下启动 Activity,则该 Activity 不会启动,系统会在日志中输出一则消息:

Calling startActivity() from outside of an Activity  context requires the  
FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

解决方式:

Intent intent = new Intent(context, XXXActivity.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
context.startActivity(intent);

如果通过startActivityForResult启动一个FLAG_ACTIVITY_NEW_TASK的intent,则无法通过onActivityResult获取要启动的component的返回结果。新的intent activity一旦启动,则调用startActivityForResult的activity会立即回调进onActivityResult方法中,且resultCode=Activity.RESULT_CANCELED

上一篇 Android USB通信入门篇
下一篇 Android扫码器通过USB数据通信而不是串口数据通信!dispatchKeyEvent代替EditText控件
目录
文章列表
1 CentOS下定时任务设置
CentOS下定时任务设置
2
React.js集成axios
React.js集成axios
3
ElasticSearch 7 学习(13)高级搜索
ElasticSearch 7 学习(13)高级搜索
4
BigDecimal比较相等,不能用equals,要用compareTo
BigDecimal比较相等,不能用equals,要用compareTo
5
Spring Boot集成MySql、MyBatis和PageHelper插件
Spring Boot集成MySql、MyBatis和PageHelper插件
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。