最详细步骤解决:Apps targeting Android12 and higher are required to specify...

问题原因:

当targetSdkVersion>=31时,需要在AndroidManifest.xml中配置android:exported的值,该值为boolean类型。

android:exported解释:

activity 是否可由其他应用的组件启动:

  • 如果设为 "true",那么 activity 可由任何应用访问,并且可通过其确切类名称启动。
  • 如果设为 "false",则 activity 只能由同一应用的组件、使用同一用户 ID 的不同应用或具有特权的系统组件启动。没有 intent 过滤器时,这是默认值。

如果应用中的 activity 包含 intent 过滤器,请将此元素设置为 "true",以允许其他应用启动该 activity。例如,假设 activity 是应用的主要 activity,并且包含 categoryandroid.intent.category.LAUNCHER

如果此元素设为 "false",并且应用尝试启动该 activity,系统会抛出 ActivityNotFoundException

此属性并非是限制 activity 向其他应用公开的唯一方式。权限还可用于限制可调用 activity 的外部实体。请参考 permission 属性。

解决方案:

总结来说就是,AndroidManifest.xml中四大组件中包含了 <intent-filter>的,全部需要加上android:exported,true或者false就根据自己的业务来定。

异常情况:

这时候就有同学该问了,为什么我明明都加上了,但是还是报这个错呢,我淋过的雨,那必须给你们撑一把伞。

几种情况

1、检查自己依赖的 Module中的AndroidManifest.xml是否都加了android:exported

2、如果第一种情况都加上了并且还是报错

那么问题就出现在我们依赖的那些库没有加android:exported

那么我们怎么知道是哪个库没有加,如何给他加上呢?跟着我的步骤一步步来

一、我们将targetSdkVersion恢复到31以下,然后重新编译一下项目

二、找到路径为app\build\intermediates\merged_manifests\debug\AndroidManifest.xml

如图所示,将该xml文件打开,直接Ctrl+F搜索<intent-filter>

三、找一找是哪个没有android:exported然后复制出来,粘贴到你自己项目的AndroidManifest.xml中,添加上android:exported后,重新将targetSdkVersion恢复到31以上编译运行。至此完美落幕,下课!

相关推荐
野生的码农5 小时前
放过自己,降低预期,及时行乐
android·ai编程
huwuhang6 小时前
索尼PS3游戏合集【中文游戏】8.12T 1430个游戏+PS3模拟器
android·游戏·智能手机·游戏机·电视
Grackers8 小时前
Android Perfetto 系列 5:Android App 基于 Choreographer 的渲染流程
android
踩着两条虫8 小时前
AI驱动的Vue3应用开发平台深入探究(十):物料系统之内置组件库
android·前端·vue.js·人工智能·低代码·系统架构·rxjava
sam.li8 小时前
JADX MCP 原理与使用部署
android·逆向·jadx
冬奇Lab8 小时前
Android 15音频子系统(五):AudioPolicyService策略管理深度解析
android·音视频开发·源码阅读
亚历克斯神9 小时前
Flutter for OpenHarmony: Flutter 三方库 mutex 为鸿蒙异步任务提供可靠的临界资源互斥锁(并发安全基石)
android·数据库·安全·flutter·华为·harmonyos
dalancon10 小时前
SurfaceControl 的事务提交给 SurfaceFlinger,以及 SurfaceFlinger 如何将这些数据设置到对应 Layer 的完整流程
android
dalancon10 小时前
SurfaceFlinger Layer 到 HWC 通信流程详解
android
cccccc语言我来了11 小时前
Linux(9)操作系统
android·java·linux