Android学习------关于Android9.0的兼容

学习链接: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上应该是不行了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值