一、概述
Android系统每出一个大版本总有一些适配的点。这些适配点如果不适配就有可能会造成app闪退、功能不能用,app上架审核不通过的问题。写这一篇不为别的,就为了以后app出问题时能够提供一个解决问题的思路。
二、适配总结
Android 6
Android实在6的时候引入了运行时权限机制,对于普通权限系统默认授权 ,对于敏感权限需要用户同意授权后才能获取。例如:文件读写、蓝牙、位置信息、联系人、摄像头、麦克风等。
Android 7
Android 7不允许在应用外使用 file://URI, 如果在 Android 7 及以上系统传递 file://URI 就会触发FileUriExposedException,进而造成app崩溃。如果要在应用间共享文件,可以使用content://URI类型的URI,
并授予URI临时访问权限,这就需要用到 FileProvider。所以现在知道为啥项目中的res-->xml中会有一个file_paths.xml,并且在AndroidManifest.xml中会配置androidx.core.content.FileProvider了吧。
Android 8
Android 8的兼容主要是针对通知,其中有两点:1.从 Android 8 开始,Google规定所有的通知必须分配一个渠道,每一个渠道,你都可以设置渠道中所有通知的行为。用户界面将通知渠道称之为通知类别,
用户可以随意修改这些设置来决定通知的行为。2.Androd 8开始不允许后台应用启动后台服务,如果要启动后台服务,需要使用 startForegroundService 指定为前台服务,否则系统会停止 Service 并抛出异常。 ps:需要增加这个权限<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
Android 9
Android 9的适配是针对Http网络请求的。从Android9开始限制HTTP网络请求,如果还想使用HTTP请求,且app还能正常使用,则需要在AndroidManifest.xml中做配置
Android 10
Android 10引入了分区存储的概念,方式应用的读取权限被滥用。Android 中存储可以分为两大类:专属存储和共享存储。 专属存储:每个应用在都拥有自己的专属目录,其它应用看不到。它包括 APP 自身的内部存储和外部存储,这俩无需存储权限便可访问。 共享存储:共享存储空间存放的是图片,视频和音频等文件,这些资源是公共的,所有 App 都能访问它们。
Android 11
从Android 11开始不能直接获取其他应用的信息,只能查询自己应用和系统应用信息。如果想要查询其他应用信息,则需要加上权限:QUERY_ALL_PACKAGES。如果不经用户使用或者申请就打开和权限,华为市场会被拒。
Android 12
Android12增加了系统默认的App启动页,如果不适配的话会出现闪屏。Android12修改了根Activity的返回键默认行为,以前返回的根了会执行Activity的onDestroy,现在只会执行到onStop。
Android 13
1.在通知栏中,用户可以关闭是否需要这个服务,且app需要具有响应的能力。 2.引入了POST_NOTIFICATIONS权限,如果用户拒绝这个权限,应用将无法发送通知。
标签:存储,适配,app,系统,应用,Android,权限 From: https://www.cnblogs.com/tony-yang-flutter/p/17638069.html