适配Android 2.3.3的旧应用在Android 8设备上的权限机制疑问
关于旧Android应用在Android 8上的权限问题解答
咱们来把这个问题拆解清楚,先给你一个明确的结论:这款旧应用安装在Android 8设备上不会崩溃,具体原因和细节如下:
核心逻辑:Android的权限兼容机制
你要知道,Android 6.0(API 23)引入运行时权限后,系统对低版本targetSdk的应用做了特殊兼容处理:
- 如果应用的
targetSdkVersion < 23(你的旧应用适配的是Android 2.3.3,对应API 10,显然符合这个条件),系统会在应用安装时,自动授予所有在AndroidManifest.xml中声明的危险权限,不需要用户手动同意。 - 读取内部存储对应的
READ_EXTERNAL_STORAGE属于危险权限,你的旧应用已经在Manifest里声明了,所以安装后系统会直接把这个权限给它,应用可以正常访问存储资源,不会出现权限缺失导致的崩溃。
特殊情况提醒
当然有个例外:如果用户后续在系统设置里手动撤销了这个权限,那么当应用再次尝试访问存储时,会抛出SecurityException。但这种情况是用户主动操作的,默认安装后的状态下,应用是拥有权限的,正常使用不会崩溃。
补充说明
这类旧应用相当于享受了“旧制豁免”的待遇,系统为了保证旧应用的兼容性,不会强制要求它们适配新的运行时权限流程。只有当开发者把应用的targetSdkVersion升级到23及以上时,才必须按照新机制,在运行时主动申请危险权限。
内容的提问来源于stack exchange,提问作者Farid Abdi
相关产品推荐
相关产品推荐

