需要注意修改功能点
1.日历提醒功能(日历权限)
2.调试工具的浮窗权限(在其他应用上层显示权限)
3.更新版本的下载安装(请求安装未知来源Apk)
4.im的录音、拍照、保存图片(录音权限,摄像头权限,存储设备读写权限)
6.评价、社区、个人资料的读取相册(相册访问权限)
7.FileProvider (在对摄像头和相册图片裁切时候,需要用)
8.Imei 必要权限(设备标识,强制,不授权不允许使用,参考京东淘宝,这个是网络请求中基础参数deviceId字段会获取imei)
9.位置信息(不强制,百度地图定位不用定位权限也能定位成功,通过ip,基站定位,不精确)
10.除去部分不需要的授权(例如通讯录读取权限,这个会造成用户的隐私担心)
新特性适配
1.默认关闭未加密连接,需要手动打开(问题现象:网络无法访问)
Starting with Android 9.0 (API level 28), cleartext support is disabled by default.
在清单文件application节点下 添加
1 | <application android:usesCleartextTraffic="true”> |
2.调试工具悬浮窗显示 Type 类型 需要分版本判断(问题现象:打开悬浮窗崩溃)
必须使用 TYPE_APPLICATION_OVERLAY 的新窗口类型
使用之前需要判断
1 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { |
3.定位相关问题
定位功能在Android 6.0系统中,需要动态获取的权限涉及到:
获取手机状态:
1 | Manifest.permission.READ_PHONE_STATE; |
获取位置信息:
1 | Manifest.permission.ACCESS_COARSE_LOCATION; |
读写SD卡:
1 | Manifest.permission.READ_EXTERNAL_STORAGE; |
Android 7.0系统 授权后需要调用LocationClient.reStart() 重启定位服务,因为如果先初始化如WifiManager、TelephonyManager,再请求确认定位权限,则即使用户确认可以授予App定位权限,App后续仍然拿不到基站、WIFI等信息
android 9.0上使用前台服务,需要添加权限
1 | <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> |
4.Apache HTTP 客户端弃用(问题现象:webview 崩溃)
从 Android 9 开始,默认情况下该内容库已从 bootclasspath 中移除且不可用于应用。要继续使用 Apache HTTP 客户端,以 Android 9 及更高版本为目标的应用可以向其 AndroidManifest.xml 添加以下内容:
1 | <uses-library android:name="org.apache.http.legacy" android:required="false"/> |
5.Android 7.0 行为变更 通过FileProvider在应用间共享文件 (问题现象:剪切图片失败)
详见工程中的BaseFileProvider
6.libHLJSign.so . 使用了deviceid (问题现象:无访问手机信息权限崩溃)
在获取权限之后调用libHLJSign.so
7.Android8以后推送需要加上channelid (问题现象:channelid 为空会报错,但只在部分机型崩溃)
用户端用到的推送的库, 云信和极光都已经适配,但是百川没有适配。小米手机不会导致崩溃,但是在小米市场的自动化测试脚本报错,导致无法通过小米市场审核。
8.Android8.0只有不透明的全屏activity可以自主设置界面方向(android 8.1 已经修复)
在Android 8.0 系统 只要给Activity同时设置了
1 | android:screenOrientation="" |
,就导致报错。