Android11适配

https://developer.android.google.cn/preview/privacy/storage

1.用户权限授权

​ (1)应用请求位置信息、麦克风、摄像头时,系统会弹出“仅限这一次”选项,属于临时授权,下次使用会再次提示用户授权。
​ (2)自动重置未使用应用权限,几个月不使用的应用,被授予的权限自动恢复为重新授权状态。
​ 如果想避免自动被重置权限(如:同步数据、与智能设备通信、与配套设备匹配),可以引导用户Intent跳转到Settings.ACTION_APPLICATION_DETAILS_SETTINGS 进行设置。调用 isAutoRevokeWhitelisted()判断权限是否被授予。
​ (3)读取电话号码相关权限更改


	     

2.存储(分区存储)

​ (1)API30之前可以使用requestLegacyExternalStorage进行适配,默认选用老的存储架构,Android11会自动忽略,会强制执行分区存储策略。
​ (2)preserveLegacyExternalStorage 设置为true,用于数据迁移,可以使应用保留原有的存储模型,只在卸载应用前有效,重新安装应用将启用新模型。系统不建议使用。
​ (3)存储:
​ 外部存储:1.应用私有存储区,android/包名,不需要存储权限即可,随着应用删除而被删除
​ getExternalFilesDir():/storage/emulated/0/Android/data/packname/files
​ getExternalCacheDir():/storage/emulated/0/Android/data/packname/cache
​ 2.MediaStroe: Media.Audio、Media.Video、Media.Images、Media.Downloads, 存储在用户手机上,不随应用删除
​ 3.SD别的目录,使用SAF框架

​ 内部存储:1.sp
​ 2.数据库
​ 3.getFilesDir():/data/user/0/packname/files
​ 4.getCacheDir():/data/user/0/packname/cache

3.Andorid11软件包的可见性(查询设备上的其他应用方式改变)

​ (1)清单文件中配置用来指定要交互或者访问的应用包名或者intent签名。

eg: 
			
			
		    
		   或者
		   
			
				
				
			
		   

​ (2)针对intent隐式打开应用时,为了避免出现ActivityNotFoundException异常,添加捕获异常操作。

 
		
		
		
	     

​ 并且使用intent时进行显示activity是否可用resolveActivity(),
​ 类似用例参考官方用例:https://developer.android.google.cn/preview/privacy/package-visibility-use-cases

4.Android11前台服务类型

​ (1)Android9开始,应用仅限于在前台访问摄像头和麦克风,Android11改变了在前台服务中访问摄像头和麦克风相关数据的方式,需要在foregroundServiceType 属性中添加新的 camera 和 microphone 类型。

eg: 
		    

5.Scudo Hardened Allocator

​ (1)Android11内部使用的堆分配提供服务,报错提示Scudo ERROR:,可查阅 Scudo 问题排查文档(https://source.android.google.cn/devices/tech/debug/scudo#Troubleshooting)。

你可能感兴趣的:(android,android,java)