安卓各版本变化,兼容适配
Android 5.0
- Material Design
- ART虚拟机
Android 6.0
- 应用权限管理
- 官方指纹支持
- Doze电量管理
- 运行时权限机制->需要动态申请权限
Android 7.0
- 多窗口模式
- 支持Java 8语言平台
- 需要使用FileProvider访问照片
- 安装apk需要兼容
Android 8.0
- 通知,渠道->适配
- 画中画
- 自动填充
- 后台限制
- 自适应桌面图标->适配
- 隐式广播限制
- 开启后台Service限制
Android 9.0
- 利用 Wi-Fi RTT 进行室内定位
- 刘海屏 API 支持
- 多摄像头支持和摄像头更新
- 不允许调用hide api
- 限制明文流量的网络请求 http
Android 10
- 暗黑模式
- 隐私增强(后台能否访问定位)
- 限制程序访问剪贴板
- 应用黑盒
- 权限细分需兼容
- 后台定位单独权限需兼容
- 设备唯一标示符需兼容
- 后台打开Activity 需兼容
- 非 SDK 接口限制 需兼容
Android 11
android的外置存储机制
Android 10 开始 就引入了沙箱机制,且国内部分厂商有做兼容。
但是在 android 11开始谷歌已经是强制要求不能读取非 “本应用沙箱 ”内 文件了。
因此,需要大家注意在保存文件的时候(包括为了分享临时存储) 一定不要写入SD卡根目录,要严格按照谷歌要求写到 应用自身沙箱路径/Android/data/com.pingan.xxx/xxx
应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。
大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。
这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?
通过Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录一般放一些长时间保存的数据
通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据如果使用上面的方法,
当你的应用在被用户卸载后,SDCard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。
而且上面二个目录分别对应 设置->应用->应用详情里面的”清除数据“与”清除缓存“选项