互联网许可不适用于oreo和馅饼

问题描述 投票:0回答:2

我是新来的。我构建了一个简单的应用程序,它将一些数据发送到服务器并接收响应。

该应用程序在Android N的设备上运行良好。但是没有在O和P上工作。似乎问题是在互联网许可下。我已经检查过,当应用程序在o和p上运行时,应用程序没有向服务器发送任何数据。如果我需要寻求任何特定的互联网访问权限,请告诉我。

我在清单中添加了这个

<uses-permission android:name="android.permission.INTERNET" />

任何帮助,将不胜感激。

java android android-8.0-oreo
2个回答
9
投票

这可能是因为你正在使用http。从Android O开始,您需要使用https而不是http,否则您将遇到错误Cleartext HTTP traffic to * not permitted。因此,您需要创建配置以允许此操作。你可以把它推荐给Opt out of cleartext traffic

文件细节:

注意:本节中的指南仅适用于针对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 Developer Blog,这里摘录:

阻止生产中的明文流量

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

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

请注意,WebView尚未兑​​现此功能。

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

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

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


9
投票

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

android:usesCleartextTraffic="true"

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


0
投票

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

android:usesCleartextTraffic="true"

虽然,这会给你警告:Warning when we add android:usesCleartextTraffic="true"

它现在将解决问题。但是您应该尽快迁移到“HTTPS”。

© www.soinside.com 2019 - 2024. All rights reserved.