当前位置: 首页 > 知识库问答 >
问题:

发布适用于Android 9的Cordova应用程序(Android API 28)获取互联网连接错误

宿鹏程
2023-03-14

我使用HTML5开发cordova跨平台应用程序

以前我使用的是Cordova 7,其中android版本为6.3,支持android API 16到26。但根据谷歌的新规则,从2019年8月开始,所有应用程序都必须针对Android API 28,即Android 8

Cordova的最新版本是Cordova 9,它支持Android 8。Cordova没有发布任何支持Android 9的版本。

所以要开发针对API 28的应用程序,我必须使用Android 8。但我在应用程序方面遇到了一些问题。之前,我的应用程序运行良好。当我用Cordova 9开发Android 8应用程序时,所有Android 8及以下版本的手机都能正常工作,但Android 9中显示错误。特别是AJAX请求。

我正在使用http(而不是https)向服务器发送AJAX请求。在一些博客中,我看到它可能会导致错误。但我看不到任何修复方法,目前我没有选择使用https。

另一种方法是设置

那么现在我该怎么办?

提前谢谢。

N、 我找到了一种使用http的方法,但一点也不懂。如果有人能解释我会很高兴的。链接如下:https://developer.android.com/training/articles/security-config

将手机升级到Android 9 Pie API 28版本6后,Cordova应用程序中出现Ajax错误


共有3个答案

常哲彦
2023-03-14

Razin Aid和Stefano Boeri提供的回答都是非常好的答案,但对于寻找如何在Android 9中启用不安全的超文本传输协议的人,请检查以下答案:如何在Android(9)Pie中允许所有网络连接类型的HTTP和HTTPS?。

请注意,如果您使用Cordova,直接修改AndroidManifest.xml(Android平台)文件不是一个好主意,而是编辑config.xml(项目配置文件)。

您将有2个工具来实现它:config-fileedit-config,在Cordova Docs中详细描述。

公冶伟
2023-03-14

经过长时间的搜索,我发现"By Default",Android 9不允许向超文本传输协议发送请求。它只允许向https网址发送请求。所以我所要做的就是将我的服务器从超文本传输协议升级到https。别担心,没那么难。如果您使用plesk进行服务器管理,只需单击2次即可永久免费安装“Lets Encrypt”SSL证书并自动更新。它还在Mozilla Firefox中显示Greenbar。但是,如果您使用Plesk以外的其他版本,请访问Lets Encrypt网站并生成一个并将其安装到您的服务器上。仅此而已。

你仍然可以在Android 9中请求http URL,但这对我来说还是有点太复杂了,所以我说通过。此外,从http升级到https也给了我更多的安全性:)

琴英华
2023-03-14

您所要做的就是将其包含在AndroidManifest中。xml应用程序标记上的以下密钥对值:

android:usesCleartextTraffic=“真”

在API 28上,此属性默认设置为false(出于安全原因),在以前的Android API中为true。

 类似资料:
  • 我正在开发一个用于检查互联网连接的android广播接收器。 问题是我的广播接收器被调用了两次。我希望它只在网络可用时被调用。如果它不可用,我不想被通知。 这是广播接收机 这是manifest.xml

  • 我有一个Android注册应用程序。当移动设备和计算机都连接到同一个wifi上时,它运行良好。但是,如果移动设备的互联网连接关闭,则会出现一条吐司消息 'java.net.连接异常:2500ms后连接到/100.118.242.179(端口80)失败:isConnted失败: ECONNREFUSED(连接被拒绝)'。 如何在移动设备上没有互联网连接的情况下运行该应用程序?

  • 问题内容: 我正在开发一个用于检查互联网连接的Android广播接收器。 问题是我的广播接收器被调用了两次。我希望只有在网络可用时才能调用它。如果不可用,我不想收到通知。 这是广播接收器 这是manifest.xml 问题答案: 你的第一个问题的答案:你的广播接收器被调用两次是因为 你已经添加了两个 网络连接更改: WiFi状态更改: 只需使用一个: 它将仅响应一个动作,而不是两个。有关更多信息,

  • 若要使用PS Vita与互联网连接,需先准备无线通信的环境。 若您的住家等地无法通过无线通信,可使用公众无线LAN服务(Hotspot)在公众场所与互联网连接。 公众无线LAN服务的使用方法与费用会因该服务的提供者而异。详细请询问该服务的提供者。 使用Wi-Fi连接 若要使用Wi-Fi与互联网连接,需准备以下内容。此外,接入点的设定通常会通过电脑进行。 与网络服务商签订合约 接入点或无线路由器 接

  • 问题内容: 我想看看是否有人在使用Java时有一种简单的方法来检测是否存在Internet连接。当前的应用程序在Windows的WinInit DLL中使用了“InternetGetConnectedState”方法,但是我的应用程序需要跨平台才能进行Mac操作,并且这种方法将无法使用。我完全不知道JNI可以在Java中使用DLL,它很快变得令人沮丧。 我唯一想到的方法是尝试打开与网站的URL连接

  • 问题内容: 当我尝试在iPhone上检查互联网连接时,出现了很多错误。谁能帮我解决这个问题? 代码: 代码错误: 如果无法读取,则错误1表示: “ Int”不可转换为“ SCNetworkReachabilityFlags” 错误2和3: 找不到接受提供的参数的’init’的重载 问题答案: 为了解决注释中提到的4G问题,我已使用@AshleyMills可达性实现作为参考并重写了Swift 3.1