0
点赞
收藏
分享

微信扫一扫

Android 12 第一次运行就报错

夜空一星 2022-05-03 阅读 44

问题描述: Manifest合并失败:当组件定义了 < intent-filter> 时,针对 Android 12 及更高版本的应用需要为 “android:exported” 指定显式值(android:exported=“true”)。

以前加上intent-filter的话,exported就默认是true。Android 12之后开始强制大家声明exported属性**。**

例如:

<application

<activity android:name=“.actvitiy.MainActivity”

android:exported=“true”

是的你没看错 Main Activity也要加这个。接下来咱们看看官方给出答案。

android:exported

================

此元素设置Activity是否可以由其他应用程序的组件启动:

  • 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 如果是"true",则任何应用都可以访问该Activity,并且可以通过其确切的类名启动。

  • 如果为"false",则Activity只能由相同应用程序的组件、具有相同用户 ID 的应用程序或特权系统组件启动。这是没有意图过滤器时的默认值。

如果你应用中的 Activity 包含 < intent-filter>,请将此元素设置为 “true”,以允许其他应用启动它。例如,如果Activity是应用程序的Main Activity并包含category:“android.intent.category.LAUNCHER”。

如果此元素设置为"false"并且应用程序尝试启动该活动,则系统会抛出一个 ActivityNotFoundException.

此属性不是限制活动暴露于其他应用程序的唯一方法权限还可用于限制可以调用 Activity 的外部实体(请参阅 permission 属性)。

不信邪的我果断修改代码进行尝试

<activity android:name=“.actvitiy.MainActivity”

android:exported=“false”

果然崩了,但是系统跑出来的不是 ActivityNotFoundException

日志如下:

2021-10-14 01:38:52.623 1219-1219/com.google.android.apps.nexuslauncher E/BaseDraggingActivity: Unable to launch. tag=AppInfo(id=-1 type=APP container=# com.android.launcher3.logger.LauncherAtom$ContainerInfo@1a1bf6a targetComponent=ComponentInfo{com.scc.demo/com.scc.demo.actvitiy.MainActivity} screen=-1 cell(-1,-1) span(1,1) minSpan(1,1) rank=0 user=UserHandle{0} title=ShuaiCiDemo componentName=ComponentInfo{com.scc.demo/com.scc.demo.actvitiy.MainActivity}) intent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.scc.demo/.actvitiy.MainActivity bnds=[1124,1039][1393,1376] }

java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.scc.demo/.actvitiy.MainActivity bnds=[1124,1039][1393,1376] } from ProcessRecord{ae07060 1219:com.google.android.apps.nexuslauncher/u0a128} (pid=1219, uid=10128) not exported from uid 10146

at android.os.Parcel.createExceptionOrNull(Parcel.java:2425)

at android.os.Parcel.createException(Parcel.java:2409)

at android.os.Parcel.readException(Parcel.java:2392)

举报

相关推荐

sql第一次

记录第一次

第一次打卡

jQuery第一次课

假期第一次总结

第一次python作业

0 条评论