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 Java的itext常见方法总结--3(水印)
Java的itext常见方法总结--3(水印)
2
CentOS下部署Kafka
CentOS下部署Kafka
3
MyBatis动态传入表名,字段名参数的解决办法--用于分表--表名是动态的
MyBatis动态传入表名,字段名参数的解决办法--用于分表--表名是动态的
4
第三方支付公司及插件文档
第三方支付公司及插件文档
5
K8S 如何选择 Docker、containerd
K8S 如何选择 Docker、containerd
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。