android 9 ,10 前台服务权限

2020-05-11  本文已影响0人  钢镚koala

比较坑,兼容新的系统Android9 Android10 。

  1. startForeground(NOTIFICATION_ID, notification)
    需要在AndroidManifest.xml中加入以下普通权限,不然在9.0系统中通知没法显示或者直接报错。
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>

  1. webview找不网页
    解决方法:在AndroidManifest.xml文件中的Application标签添加android:usesCleartextTraffic="true"

  2. target sdk 28 ,http 建议改为https,无论什么环境!!

  3. 限制 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 即可解决明文传输被限制的问题

上一篇下一篇

猜你喜欢

热点阅读