Java 互联网许可在奥利奥和馅饼中不起作用
我是新来的。我构建了一个简单的应用程序,它向服务器发送一些数据并接收响应 该应用程序在安卓N之前的设备上运行良好,但在O和p上不起作用。问题似乎在于互联网许可。我已经检查过了,应用程序在o和p上运行时没有向服务器发送任何数据。请让我知道,如果我需要寻求任何特定的互联网接入许可 我在舱单上加了这个Java 互联网许可在奥利奥和馅饼中不起作用,java,android,android-8.0-oreo,Java,Android,Android 8.0 Oreo,我是新来的。我构建了一个简单的应用程序,它向服务器发送一些数据并接收响应 该应用程序在安卓N之前的设备上运行良好,但在O和p上不起作用。问题似乎在于互联网许可。我已经检查过了,应用程序在o和p上运行时没有向服务器发送任何数据。请让我知道,如果我需要寻求任何特定的互联网接入许可 我在舱单上加了这个 <uses-permission android:name="android.permission.INTERNET" /> 任何帮助都将不胜感激。这可能是因为您使用的是http。从A
<uses-permission android:name="android.permission.INTERNET" />
任何帮助都将不胜感激。这可能是因为您使用的是
http
。从Android O开始,您需要使用https
而不是http
,否则您将有一个错误明文http流量*不允许。因此,您需要创建一个配置来允许此操作。你可以参考它
文件详情:
注意:本节中的指南仅适用于目标应用程序
Android 8.1(API级别27)或更低版本。从Android 9(API)开始
级别28),默认情况下禁用明文支持
打算仅使用secure Manager连接到目标的应用程序
连接可以选择不支持明文(使用未加密的
HTTP协议(而不是HTTPS)连接到这些目标。此选项
有助于防止由于URL更改而导致应用程序意外倒退
由外部源(如后端服务器)提供。看见
NetworkSecurityPolicy.isClearTextTrafficAllowed()
了解更多详细信息
例如,应用程序可能希望确保所有到的连接
secure.example.com
始终通过HTTPS来保护敏感的
来自敌对网络的流量
res/xml/network\u security\u 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>
secure.example.com
您还可以在AndroidManifest.xml
中使用android:usesCleartextTraffic=“true”
作为开发模式,但不应在发布模式中使用它。更多详细信息,请参见以下摘录:
在生产中阻止明文通信
保护您的应用程序的安装群不受
cleartext流量,声明android:usesCleartextTraffic=“false”
应用程序中应用程序元素的属性
AndroidManifest.xml。这声明应用程序不应该使用
cleartext网络流量和使平台网络堆叠
Android棉花糖阻止应用程序中的明文流量。例如
如果您的应用程序意外尝试通过明文登录用户
HTTP请求时,请求将被阻止,并且用户的身份和
密码不会泄漏到网络
您不必将应用程序的minSdkVersion或targetSdkVersion设置为
23(安卓棉花糖)使用安卓:UseSlearTextTraffic。关于老年人
在平台上,此属性被忽略,因此没有任何效果
请注意,WebView尚不支持此功能
在某些情况下,明文通信仍然可能离开或关闭
进入应用程序。例如,套接字API忽略明文策略
因为它不知道它发送或接收的数据是否可以
被归类为明文。另一方面,Android平台HTTP堆栈
另一方面,遵守政策,因为他们知道流量是否为明文
谷歌AdMob也是为了遵守这一政策而建立的。当你的应用程序
声明它不使用明文通信,只使用HTTPS广告
应该提供给应用程序
鼓励第三方网络、广告和分析库添加
支持这项政策。他们可以查询明文通信策略
通过NetworkSecurityPolicy类
如果您的URL以http
开头,那么您必须在Android Pie中使用它,即API级别28
android:usesCleartextTraffic="true"
在应用程序标记内的清单中
作为属性,在AndroidManifest.xml文件中添加以下代码行:
android:usesCleartextTraffic="true"
尽管如此,这会给你一个警告:
现在这个问题可以解决了。但是您应该尽快迁移到“HTTPS”。URL以http://开头您需要在应用程序标记内的清单文件中添加以下属性
android:usesCleartextTraffic="true"
您在尝试向服务器发送数据时一定遇到错误。请用日志更新你的问题。它必须工作,检查回答,让我们看看结果是什么…我没有在logcat中得到任何错误,也没有工作。我用截击25来发送数据,但它没有发送。事实就是这样。非常感谢。很乐意帮忙:)太好了!请接受解决您问题的答案之一。为什么我们不应该在发布版本中使用第二个解决方案?如果你能提供一些关于这方面的文档,那就太好了。非常感谢你!