从Android 9(API级别28)开始,默认情况下禁用明文支持。

Posted C# java C++ 开源通信

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Android 9(API级别28)开始,默认情况下禁用明文支持。相关的知识,希望对你有一定的参考价值。

 在生产环境中强制使用https,但在调试模式下允许使用明文的方法 它仅在api 23+上使用

在build.gradle中:

// Put this in your buildtypes debug section:
manifestPlaceholders = [usesCleartextTraffic:"true"]

// Put this in your buildtypes release section
manifestPlaceholders = [usesCleartextTraffic:"false"]

androidManifest.xml中的application标签中

android:usesCleartextTraffic="${usesCleartextTraffic}"
 android:usesCleartextTraffic="true"

其它方法“

删除了这一行

android:networkSecurityConfig="@xml/network_security_config" 

 

application 添加
android:usesCleartextTraffic="true"

 

改造配置类OKHttp创建时添加了一个连接规范

 .connectionSpecs(CollectionsKt.listOf(ConnectionSpec.MODERN_TLS, ConnectionSpec.CLEARTEXT))

 

OkHttpClient okHttpClient = new OkHttpClient.Builder()
        .readTimeout(10, TimeUnit.SECONDS)
        .connectTimeout(10, TimeUnit.SECONDS)
        .cache(null)
        .connectionSpecs(CollectionsKt.listOf(ConnectionSpec.MODERN_TLS, ConnectionSpec.CLEARTEXT))
        .addInterceptor(new NetworkInterceptor(context))
        .addInterceptor(createLoggingInterceptor())
        .addInterceptor(createSessionExpiryInterceptor())
        .addInterceptor(createContextHeaderInterceptor())
        .build();

 

 

<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </base-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">api.endv.cn</domain>
        <domain includeSubdomains="true">im.endv.cn</domain>
        <domain includeSubdomains="true">pay.endv.cn</domain>
        <domain includeSubdomains="true">endv.cn</domain>
    </domain-config>
</network-security-config>

 

以上是关于从Android 9(API级别28)开始,默认情况下禁用明文支持。的主要内容,如果未能解决你的问题,请参考以下文章

Socket.io 无法在 Android 9(API 级别 28)上运行

API 级别低于 9 的 android:filterTouchesWhenObscured 的类似物

完美解决Android 9.0以上HTTP网络请求被限制问题

如何在 API 28 中设置 android 日期和时间选择器的样式

Android调用系统隐藏API时注意的问题

Android调用系统隐藏API时注意的问题