为了账号安全,请及时绑定邮箱和手机立即绑定

互联网许可在奥利奥和派中不起作用

互联网许可在奥利奥和派中不起作用

慕莱坞森 2022-07-27 09:21:38
我是新来的。我构建了一个简单的应用程序,它将一些数据发送到服务器并接收响应。该应用程序在最高 android N 的设备上运行良好。但不能在 O 和 P 上运行。似乎问题出在互联网许可上。我已经检查过,该应用程序在 o 和 p 上运行时没有向服务器发送任何数据。如果我需要寻求任何特定的互联网访问权限,请告诉我。我在清单中添加了这个<uses-permission android:name="android.permission.INTERNET" />任何帮助,将不胜感激。
查看完整描述

4 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

如果您的 URL 以开头,http那么您必须在 Android Pie 中使用它,即 API 级别 28

android:usesCleartextTraffic="true"

在应用程序标记内的清单中作为属性


查看完整回答
反对 回复 2022-07-27
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

这可能是因为您正在使用http. 从 Android O 开始,需要使用httpsinstead ofhttp否则会报错Cleartext HTTP traffic to * not permitted。因此,您需要创建一个配置以允许这样做。您可以参考选择退出明文流量

文件详情:

注意:本节中的指南仅适用于面向 Android 8.1(API 级别 27)或更低版本的应用。从 Android 9(API 级别 28)开始,明文支持默认禁用。

打算仅使用安全连接连接到目标的应用程序可以选择不支持到这些目标的明文(使用未加密的 HTTP 协议而不是 HTTPS)。此选项有助于防止由于后端服务器等外部源提供的 URL 更改而导致应用程序意外回归。有关 NetworkSecurityPolicy.isCleartextTrafficPermitted()更多详细信息,请参阅。

例如,应用程序可能希望确保所有连接 secure.example.com始终通过 HTTPS 完成,以保护来自敌对网络的敏感流量。

res/xml/network_security_config.xml:

<?xml version="1.0" encoding="utf-8"?><network-security-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">secure.example.com</domain>
    </domain-config></network-security-config>

.


你也可以android:usesCleartextTraffic="true"在你AndroidManifest.xml的开发模式下使用,但你不应该在发布模式下使用它。Android 开发者博客中有关它的更多详细信息,这里是摘录:

阻止生产中的明文流量

为了保护您的应用程序的安装基础免受明文流量的回归,请在应用程序的 AndroidManifest.xml 中的应用程序元素上声明 android:usesCleartextTraffic=”false” 属性。这声明了应用程序不应该使用明文网络流量,并使 Android Marshmallow 的平台网络堆栈阻止应用程序中的明文流量。例如,如果您的应用不小心尝试通过明文 HTTP 请求登录用户,该请求将被阻止,并且用户的身份和密码不会泄露到网络。

您不必将应用的 minSdkVersion 或 targetSdkVersion 设置为 23 (Android Marshmallow) 即可使用 android:usesCleartextTraffic。在较旧的平台上,此属性会被忽略,因此无效。

请注意,WebView 尚不支持此功能。

在某些情况下,明文流量可能仍会离开或进入应用程序。例如,Socket API 忽略了明文策略,因为它不知道它传输或接收的数据是否可以归类为明文。另一方面,Android 平台 HTTP 堆栈遵守该策略,因为它们知道流量是否为明文。

Google AdMob 也是为了遵守此政策而构建的。当您的应用声明它不使用明文流量时,应仅向应用投放 HTTPS 广告。

鼓励第三方网络、广告和分析库添加对此策略的支持。他们可以通过 NetworkSecurityPolicy 类查询明文流量策略。


查看完整回答
反对 回复 2022-07-27
?
慕沐林林

TA贡献2016条经验 获得超9个赞

在 AndroidManifest.xml 文件中添加以下代码行:

android:usesCleartextTraffic="true"

虽然,这会给你警告: 

//img1.sycdn.imooc.com//62e093510001ac4907180076.jpg

它会暂时解决问题。但是您应该尽快迁移到“HTTPS”。



查看完整回答
反对 回复 2022-07-27
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

URL 以http://开头,您需要在应用程序标记内的清单文件中添加以下属性。

android:usesCleartextTraffic="true"


查看完整回答
反对 回复 2022-07-27
  • 4 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信