Oreo和Pie中的Internet权限不起作用

9

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

这个应用在 Android N 及以下的设备上运行良好,但在 O 和 P 上无法正常工作。看起来问题出在网络权限上。我已经检查过了,当应用在 O 和 P 上运行时,它没有向服务器发送任何数据。请告诉我是否需要申请特定的网络访问权限。

我已经在清单文件中添加了以下内容:

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

任何帮助都将不胜感激。


当您尝试向服务器发送数据时,您必须会遇到一个错误。请更新您的问题并附上日志。 - twenk11k
它必须能够工作,检查响应并让我们看看结果是什么... - Masoud Darzi
我在Logcat中没有看到任何错误信息,但是代码也没有起作用。我尝试使用Volley 25来发送数据,但是它并没有成功发送。 - Jameel
4个回答

22

如果您的URL以http开头,则必须使用Android Pie即API级别28中使用的方式。

android:usesCleartextTraffic="true"

在你的清单文件中,在应用程序标签内作为属性


那就是这样。非常感谢。 - Jameel
很高兴能帮忙 :) - RAHUL MAURYA

20
很可能是因为您正在使用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>
你也可以在你的AndroidManifest.xml中使用android:usesCleartextTraffic="true"来开发应用程序,但是发布时应该不使用它。关于此更多详细信息请参见Android Developer Blog。请注意,在某些情况下,明文流量仍可能离开或进入应用程序。

太好了!请接受解决您问题的答案之一。 - ישו אוהב אותך
为什么我们不应该在发布版本中使用第二个解决方案?如果您能提供一些相关文档,那就太好了。非常感谢! - Reaz Murshed

4
请在AndroidManifest.xml文件中添加以下代码行:
android:usesCleartextTraffic="true"

虽然这将会给你一个警告: 添加 android:usesCleartextTraffic="true" 时的警告

目前它可以解决问题。但是你应该尽快迁移到“HTTPS”。


1

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

android:usesCleartextTraffic="true"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接