android 9 ,10 前台服务权限
比较坑,兼容新的系统Android9 Android10 。
- startForeground(NOTIFICATION_ID, notification)
需要在AndroidManifest.xml中加入以下普通权限,不然在9.0系统中通知没法显示或者直接报错。
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
-
webview找不网页
解决方法:在AndroidManifest.xml文件中的Application标签添加android:usesCleartextTraffic="true" -
target sdk 28 ,http 建议改为https,无论什么环境!!
-
限制 HTTP 网络请求(*)
Android 9.0 中限制了 HTTP(明文传输)网络请求,若仍继续使用HTTP请求,则会在日志中提示以下异常(只是无法正常发出请求,不会导致应用崩溃):
java.net.UnknownServiceException: CLEARTEXT communication to xxx not permitted by network security policy
适配的方法如下:
第一种
在资源目录中新建一个 xml 文件作为网络安全配置文件,例如 xml/network_security_config.xml,然后在文件中填写以下内容:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" overridePins="true" />
<certificates src="user" overridePins="true" />
</trust-anchors>
</base-config>
</network-security-config>
在AndroidManifest.xml进行配置:
<application
... android:networkSecurityConfig="@xml/network_security_config"> ...
</application>
第二种
Android 6.0 中引入了是否允许网络使用明文传输的配置:
<application android:usesCleartextTraffic=["true" | "false"]>
原来默认为 true,但在 Android 9.0 中默认值改为了 false,因此将配置手动设为 true 即可解决明文传输被限制的问题