【问题标题】:Android app not permitting cleartext traffic inspite of adding xml permissions尽管添加了 xml 权限,但 Android 应用程序不允许明文流量
【发布时间】:2019-08-27 11:40:10
【问题描述】:

我正在尝试使用 nativescript-vue 访问开发服务器 API。我已经在 android 清单中添加了所有可能的权限,但它给出了错误:JS: Error: java.io.IOException: Cleartext HTTP traffic to url not allowed

这是我的清单:

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

<application
        android:usesCleartextTraffic="true"
        android:name="com.tns.NativeScriptApplication"
        android:allowBackup="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name"
        android:cleartextTrafficPermitted="true"
        android:usesCleartextTraffic="true"
        android:networkSecurityConfig="@xml/network_security_config"
        android:theme="@style/AppTheme">

这是 network_security_config.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
    <domain-config cleartextTrafficPermitted="true">
       <domain includeSubdomains="true">192.168.xxx.xxx</domain>
   </domain-config>
</network-security-config>

这里是 Nativescipt-vue 代码:

httpModule.request({
        url: "http://192.168.XXX.XXX:XXXX/func",
        method: "POST",
        headers: { "Content-Type": "application/json" },
        content: data
      }).then((response) => {
        const result = response.content.toJSON();
      }, (e) => {
        console.error(e);
      });

【问题讨论】:

  • 您是否在更新清单后尝试了干净的构建?在android:usesCleartextTraffic="true" 之间应该可以解决问题,除非您只想在我没有机会亲自尝试的特定域上允许明文流量。
  • @Manoj,是的,我尝试进行干净的构建。我也尝试单独放置android:usesCleartextTraffic="true" 行,但它似乎不起作用。
  • 您使用的是模拟器/设备吗?您使用的是哪个版本的 Android?
  • 我找到了解决方案。 tns platform remove android 然后tns platform add android 成功了。它可能没有阅读清单。感谢@Manoj 的帮助。
  • 你确实提到你尝试过clean build,猜你一开始没有理解clean build的含义。

标签: nativescript nativescript-vue


【解决方案1】:

对于那些面临同样问题的人,tns platform remove androidtns platform add android 为我工作。在此之后它开始读取更新的清单。

【讨论】:

  • 嘿 Teddomatic,我尝试了这些命令,但仍然遇到同样的错误。不知道为什么我的清单文件没有得到尊重。
  • @SammyKumar,您之前是否停止过正在运行的程序?尝试在实际设备上运行它,或者重新启动您正在使用的模拟器。
【解决方案2】:

进入 App_Resources -> Android -> src\main -> AndroidManifest.xml 添加 android:usesCleartextTraffic="true" 进入应用程序 xml 部分然后执行tns 更新资源 cmd。

【讨论】:

    猜你喜欢
    • 2020-01-08
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多