Android 9.0 网络权限的问题以及android:usesCleartextTraffic

问题

ionic cordova 打包的android应用在进行网络请求时,会出现网络错误,http请求无法访问。我使用的是android 9.1.0有该问题。使用android 7.1.4就没有该问题。
经过几次尝试,发现Android 9.0以上系统,HTTP网络访问请求被限制;但是HTTPS无影响。
为保证访问安全,Android P以上要求网络请求必须为Https;Http请求会抛异常,导致apk闪退。

原因分析

在这里插入图片描述
Android 9.0以上的应用默认都被限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉。同时,目标API级别为27或更低的应用程序的默认值为“ true”。面向API级别28或更高级别的应用默认为“ false”。

解决方法

有三种解决方法:
(1)App改用https请求
(2)targetSdkVersion降到27以下
(3)更改网络安全配置
我这里采用第三种方式:
在**./platforms/android/app/scr/main/AndroidMaindest.xml**中进行修改
添加 android:usesCleartextTraffic="true"即可

<!-- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- app配置 -->
<application android:usesCleartextTraffic="true" android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:requestLegacyExternalStorage="true" android:supportsRtl="true">
...
</application>

android:usesCleartextTraffic:指示应用程序是否打算使用明文网络流量,例如明文HTTP

作用

忽略证书,可以使用明文流量访问,使得https&http都可以访问。

安全性问题

避免明文通信的主要原因是缺乏机密性,真实性和防篡改保护;网络攻击者可以窃听所传输的数据,并且还可以对其进行修改而不会被检测到。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值