Android 9.0 网络权限适配

Google 为了提升用户数据和设备的安全性, 在 Android P (9.0) 系统中默认要求应用程序使用加密连接 (TLS)。这意味着运行 Android P 的设备将禁止 App 使用未加密的 HTTP 明文传输。所有网络流量必须通过加密协议 (如 TLS) 传输。而 Android Nougat (7.1) 和 Oreo (8.1) 系统不受此限制

如果需要在 Android P 中允许未加密的连接 (如调试或兼容旧系统), 可以通过以下步骤配置网络安全策略

创建 network_security_config.xml

在项目的 res 文件夹下创建 xml 文件夹, 然后在该文件夹中创建文件 network_security_config.xml

20190125111952251.png

添加以下内容

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <!-- 允许明文流量 (HTTP) -->
    <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 中引用配置文件

在应用的 AndroidManifest.xml 文件中, 引用刚创建的网络安全配置

Snipaste_2020-04-14_03-15-59.png

<application
    android:networkSecurityConfig="@xml/network_security_config"
    android:allowBackup="true"
    android:label="@string/app_name"
    android:icon="@mipmap/ic_launcher">
    ...
</application>

原文

Android 9.0网络权限适配

最后更新于 2020-04-14
使用 Hugo 构建
主题 StackJimmy 设计