学习链接:https://developer.android.google.cn/about/versions/pie/android-9.0-changes-28
#Android9.0适配须知
1.前台服务权限声明
需要请求前台服务(比如通知栏中的通知,音乐播放器通知栏)权限,(FOREGROUND_SERVICE),这是一个普通权限,所以只需要在mainfest中添加即可,使用 Service.startForeground
android.permission.FOREGROUND_SERVICE
2 .获取 READ_PHONE_STATE
1.构建序列号弃用 在 Android 9 中,Build.SERIAL 始终设置为 "UNKNOWN" 以保护用户的隐私。
2.如果您的应用需要访问设备的硬件序列号,您应改为请求 READ_PHONE_STATE 权限,然后调用 getSerial()
3.安全性变更
Android 9 包含可提升您的应用安全性的多个行为变更,但这些变更仅在您的应用以 API 级别 28 或更高级别为目标平台时才会生效
默认情况下启用网络传输层安全协议 (TLS)
意思就是如果在9.0系统机型上,使用非Https请求会发生崩溃异常,但是如果您的应用需要为特定域名启用明文,您必须在应用的网络安全性配置中针对这些域名将 cleartextTrafficPermitted 显式设置为 true。怎么做呢
3.1 manifest 配置
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config"
... >
...
</application>
</manifest>
3.2 xml文件加下添加 network_security_config.xml 配置
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true"/>
</network-security-config>
4.Apache HTTP 客户端弃用
在 Android 6.0 中,我们取消了对 Apache HTTP 客户端的支持。 从 Android 9 开始,默认情况下该内容库已从 bootclasspath 中移除且不可用于应用。
要继续使用 Apache HTTP 客户端,以 Android 9 及更高版本为目标的应用可以向其 AndroidManifest.xml 添加以下内容:
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
5.界面变更
5.1视图焦点
0 面积的视图(即宽度或高度为 0)再也不能被聚焦。
此外,Activity 不再隐式分配触摸模式下的初始焦点。 而是由您显式请求初始焦点(如若需要的话)。
之前的做法是如果要防止获取EditText标签会在之前添加一个0像素的View获取焦点,防止打开界面就弹出键盘,9.0上应该是不行了。