我收到了Android 8用户的报告,我的应用(使用后端Feed)没有显示内容。经过调查,我发现在Android 8上发生以下异常:
08-29 12:03:11.246 11285-11285/ E/: [12:03:11.245, main]: Exception: IOException java.io.IOException: Cleartext HTTP traffic to * not permitted
at com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:115)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:458)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
at com.deiw.android.generic.tasks.AbstractHttpAsyncTask.doConnection(AbstractHttpAsyncTask.java:207)
at com.deiw.android.generic.tasks.AbstractHttpAsyncTask.extendedDoInBackground(AbstractHttpAsyncTask.java:102)
at com.deiw.android.generic.tasks.AbstractAsyncTask.doInBackground(AbstractAsyncTask.java:88)
at android.os.AsyncTask$2.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
(我已删除包名,URL和其他可能的标识符)
在Android 7及更低版本上一切正常,我没有在Manifest中设置android:usesCleartextTraffic
(并将其设置为true
没有帮助,无论如何都是默认值),我也没有使用Network Security信息。如果我致电NetworkSecurityPolicy.getInstance().isCleartextTrafficPermitted()
,则会针对Android 8返回false
,针对旧版本返回true
,使用相同的apk文件。
我试图在关于Android O的Google信息上找到一些提及,但没有成功。
答案 0 :(得分:1008)
根据Network security configuration -
从Android 9(API级别28)开始,禁用明文支持 默认情况下。
另请查看 - https://koz.io/android-m-and-the-war-on-cleartext-traffic/
选项1 -
创建文件res / xml / network_security_config.xml -
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">Your URL(ex: 127.0.0.1)</domain>
</domain-config>
</network-security-config>
AndroidManifest.xml -
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:networkSecurityConfig="@xml/network_security_config"
...>
...
</application>
</manifest>
选项2 -
android:usesCleartextTraffic Doc
AndroidManifest.xml -
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>
同样,@david.s' answer指出android:targetSandboxVersion
也可能是一个问题 -
根据Manifest Docs -
android:targetSandboxVersion
此应用使用的目标沙箱。沙盒版本越高 数量越多,安全级别越高。其默认值为1;您 也可以将其设置为2.将此属性设置为2将应用程序切换为 一个不同的SELinux沙箱。以下限制适用于a 2级沙箱:
- Network Security Config中的默认值
usesCleartextTraffic
为false。- 不允许共享Uid。
所以选项3 -
如果android:targetSandboxVersion
中有<manifest>
,请将其缩小为1
AndroidManifest.xml -
<?xml version="1.0" encoding="utf-8"?>
<manifest android:targetSandboxVersion="1">
<uses-permission android:name="android.permission.INTERNET" />
...
</manifest>
答案 1 :(得分:59)
在AndroidManifest中我找到了这个参数:
android:networkSecurityConfig="@xml/network_security_config"
和@ xml / network_security_config在network_security_config.xml中定义为:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<!--Set application-wide security config using base-config tag.-->
<base-config cleartextTrafficPermitted="false"/>
</network-security-config>
我刚将cleartextTrafficPermitted改为true
答案 2 :(得分:36)
将您的网址从 HTTP
更改为HTTPS
;
成功了!
答案 3 :(得分:33)
您可能只想在调试时允许使用明文,但是保留了在生产环境中拒绝明文的安全性好处。这对我很有用,因为我在不支持https的开发服务器上测试了我的应用程序。以下是在生产环境中强制使用https,但在调试模式下允许使用明文的方法:
在build.gradle中:
// Put this in your buildtypes debug section:
manifestPlaceholders = [usesCleartextTraffic:"true"]
// Put this in your buildtypes release section
manifestPlaceholders = [usesCleartextTraffic:"false"]
在AndroidManifest.xml中的应用程序标记中
android:usesCleartextTraffic="${usesCleartextTraffic}"
答案 4 :(得分:20)
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">***Your URL(ex: 127.0.0.1)***</domain>
</domain-config>
</network-security-config>
在上面提供的建议中,我提供的网址为 http://xyz.abc.com/mno/
我将其更改为 xyz.abc.com ,然后它开始工作。
答案 5 :(得分:19)
我在 Android 9 中遇到的问题是在带有http的域的网络视图上导航 this answer
中的解决方案<application
android:networkSecurityConfig="@xml/network_security_config"
...>
和:
res / xml / 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>
</network-security-config>
答案 6 :(得分:18)
对某人可能有用。
我们最近在Android 9上也遇到了同样的问题,但是我们只需要在WebView中显示一些Urls,没有什么特别的。因此,在清单中添加android:usesCleartextTraffic="true"
是可行的,但是我们不想为此牺牲整个应用程序的安全性。
因此解决方法是将链接从http
更改为https
答案 7 :(得分:14)
我已经从已经存在的android清单文件中删除了这一行
android:networkSecurityConfig="@xml/network_security_config"
并添加
android:usesCleartextTraffic="true"
此到清单中的应用程序标记
<application
android:usesCleartextTraffic="true"
android:allowBackup="true"
android:label="@string/app_name"
android:largeHeap="true"
android:supportsRtl="true"
android:theme="@style/AppTheme"
>
然后出现此错误不允许对overlay.openstreetmap.nl的明文HTTP流量在Android 9和10中消失了。我希望这对Android 8也适用,如果可以帮助您别忘了投票谢谢你
答案 8 :(得分:9)
好吧,这是⇒⇒不是⇐⇐ 将其重复数千次添加到您的清单中,但这只是基于此的提示,但是给您额外的好处(也许还有一些背景信息)。
Android具有src-Directory的一种覆盖功能。
默认情况下,您拥有
/ app / src / 主要
但是您可以添加其他目录来覆盖您的AndroidManifest.xml。运作方式如下:
在此文件内,您不必将所有规则放入其中,而只需将您要从/ app / src / < strong> main / AndroidManifest.xml
这里是一个示例,显示请求的CLEARTEXT-Permission的外观:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yourappname">
<application
android:usesCleartextTraffic="true"
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:allowBackup="false"
android:theme="@style/AppTheme">
</application>
</manifest>
有了这些知识,您现在很容易将1,2,3取决于您的 debug |重载权限。主|释放环境。
最大的好处是……您的生产清单中没有调试资料,并且您可以保持简单易维护的结构
答案 9 :(得分:9)
最简单的解决方案[Xamarin表格]
对于Android
Android Project
,然后单击Properties
,AssemblyInfo.cs
并将此代码粘贴到此处:
[assembly: Application(UsesCleartextTraffic =true)]
对于iOS
使用NSAppTransportSecurity
:
您必须将NSAllowsArbitraryLoads
文件中YES
词典下的NSAppTransportSecurity
键设置为info.plist
。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
答案 10 :(得分:7)
添加... android:usesCleartextTraffic =“ true” ...到您的清单文件中似乎可以解决该问题,但对数据完整性构成威胁。
出于安全原因,我在清单文件中使用了manifest placeholders和android:usesCleartextTraffic(例如Option 3 of the accepted answer,例如@ Hirishikesh Kadam 的响应),只允许使用明文在调试环境中。
在我的 build.gradle(:app)文件中,我添加了一个清单占位符,如下所示:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
manifestPlaceholders.cleartextTrafficPermitted ="true"
}
}
在上面的这一行上注意占位符名称 cleartextTrafficPermitted
manifestPlaceholders.cleartextTrafficPermitted ="true"
然后在我的Android清单中,我使用了相同的占位符...
AndroidManifest.xml-
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="${cleartextTrafficPermitted}"
...>
...
</application>
</manifest>
因此,仅在调试环境下才允许明文通信。
答案 11 :(得分:7)
好的,我已经弄明白了。这是由于我添加的Manifest参数android:targetSandboxVersion="2"
因为我们也有Instant App版本 - 它应该确保用户从Instant App升级到常规应用程序时,他不会通过传输丢失他的数据。然而,由于模糊的描述提示:
指定此应用程序要使用的目标沙箱。更高的sanbox版本将具有更高的安全级别。
此属性的默认值为1.
它显然也增加了新级别的安全策略,至少在Android 8上。
答案 12 :(得分:4)
用于React Native项目
它已在RN 0.59上修复。 您可以在upgrade diff from 0.58.6 to 0.59上找到 您可以应用它而无需升级RN版本,请按照以下步骤操作:
创建文件:
android/app/src/debug/res/xml/react_native_config.xml-
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="false">localhost</domain>
<domain includeSubdomains="false">10.0.2.2</domain>
<domain includeSubdomains="false">10.0.3.2</domain>
</domain-config>
</network-security-config>
android/app/src/debug/AndroidManifest.xml-
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<application tools:targetApi="28"
tools:ignore="GoogleAppIndexingWarning"
android:networkSecurityConfig="@xml/react_native_config" />
</manifest>
检查接受的答案以了解根本原因。
答案 13 :(得分:4)
对我来说,有效的答案是@PabloCegarra的答案:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
您可能会收到有关cleartextTrafficPermitted="true"
如果您知道要列入“白名单”的域,则应将接受的答案和上述答案混在一起:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="false">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">books.google.com</domain>
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</domain-config>
</network-security-config>
此代码对我有效,但是我的应用仅需要从books.google.com检索数据。 通过这种方式,安全警告消失了。
答案 14 :(得分:2)
将以下内容放入您的pwd
中:
resources/android/xml/network_security_config.xml
这可以解决Android(Cordova / Ionic)上的<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
问题。
答案 15 :(得分:2)
cleartext support is disabled by default.Android in 9 and above
Try This one I hope It will work fine
1 Step:-> add inside android build gradle (Module:App)
useLibrary 'org.apache.http.legacy'
android {
compileSdkVersion 28
useLibrary 'org.apache.http.legacy'
}
然后2步:->清单 在清单应用程序标签中添加
<application
android:networkSecurityConfig="@xml/network_security_config">//add drawable goto Step 4
// Step --->3 add to top this line
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
</application>
//步骤4->>创建Drawable >> Xml文件>>名称为>> 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>
</network-security-config>
答案 16 :(得分:1)
如果您使用的是 ionic ,并且在本地http 插件期间遇到此错误,则需要进行以下修复-
转到resources/android/xml/network_security_config.xml
更改为-
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
<domain includeSubdomains="true">api.example.com(to be adjusted)</domain>
</domain-config>
</network-security-config>
对我有用!
答案 17 :(得分:1)
尝试使用“ https://”(而不是“ http://”)访问URL
答案 18 :(得分:1)
在标头中添加此参数解决了我在apiSauce React Native中的问题
"Content-Type": "application/x-www-form-urlencoded",
Accept: "application/json"
答案 19 :(得分:1)
更新2019年12月ionic-4.7.1
<manifest xmlns:tools=“http://schemas.android.com/tools”>
<application android:usesCleartextTraffic=“true” tools:targetApi=“28”>
请在android manifest .xml文件中添加以上内容
ionic的先前版本
确保在Ionic Project的config.xml
中具有以下内容:
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
<application android:networkSecurityConfig="@xml/network_security_config" />
<application android:usesCleartextTraffic="true" />
</edit-config>
运行离子Cordova构建android。它在Platforms下创建Android文件夹
打开Android Studio并打开项目中存在的Android文件夹 项目平台Android。静置几分钟,以便建立gradle
gradle build
完成后,我们在将minSdVersion
包含在manifest.xml
中时遇到了一些错误。
现在,我们要做的就是从<uses-sdk android:minSdkVersion="19" />
中删除manifest.xml
。
确保将其从两个位置都删除:
AndroidManifest.xml
。AndroidManifest.xml
。现在尝试再次构建gradle,现在可以成功构建
确保在App→清单→Androidmanifest.xml
的Application标签中具有以下内容:
<application
android:networkSecurityConfig="@xml/network_security_config" android:usesCleartextTraffic="true" >
打开network_security_config
(应用程序→res→xml→network_security_config.xml
)。
添加以下代码:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">xxx.yyyy.com</domain>
</domain-config>
</network-security-config>
此处xxx.yyyy.com
是HTTP API的链接。确保在URL之前不包含任何Http。
注意:现在使用Android Studio来构建应用程序(构建-Build Bundle's / APK-Build APK),现在您可以使用该应用程序了,它在Android Pie中可以正常工作。如果您尝试使用ionic Cordova build android来构建应用程序,它将覆盖所有这些设置,因此请确保使用Android Studio来构建Project。
如果您安装了任何较旧的应用程序版本,请卸载它们并尝试一下,否则将出现一些错误:
未安装应用
答案 20 :(得分:1)
在我的情况下,URL在浏览器中也不起作用。
我用https://www.google.com/进行检查
webView.loadUrl("https://www.google.com/")
对我有用。
答案 21 :(得分:1)
将您的网址从HTTP更改为HTTPS;
答案 22 :(得分:1)
要将这些各种答案应用于const Text(
'OVER',
style: TextStyle(decoration: TextDecoration.overline),
);
,可以使用类和程序集级别的属性,而无需手动编辑Xamarin.Android
当然需要Internet许可(是)。
AndroidManifest.xml
注意:通常,程序集级属性会添加到您的[assembly: UsesPermission(Android.Manifest.Permission.Internet)]
文件中,但是AssemblyInfo.cs
之下和using
之上的任何文件都可以使用。
然后在您的Application子类上(如果需要,创建一个),可以添加对namespace
文件的引用的NetworkSecurityConfig
:
Resources/xml/ZZZZ.xml
在#if DEBUG
[Application(AllowBackup = false, Debuggable = true, NetworkSecurityConfig = "@xml/network_security_config")]
#else
[Application(AllowBackup = true, Debuggable = false, NetworkSecurityConfig = "@xml/network_security_config"))]
#endif
public class App : Application
{
public App(IntPtr javaReference, Android.Runtime.JniHandleOwnership transfer) : base(javaReference, transfer) { }
public App() { }
public override void OnCreate()
{
base.OnCreate();
}
}
文件夹中创建一个文件(如果需要,请创建Resources/xml
文件夹)。
示例xml
文件,请根据需要进行调整(请参见其他答案)
xml/network_security_config
您还可以在<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">www.example.com</domain>
<domain includeSubdomains="true">notsecure.com</domain>
<domain includeSubdomains="false">xxx.xxx.xxx</domain>
</domain-config>
</network-security-config>
上使用UsesCleartextTraffic
参数:
ApplicationAttribute
答案 23 :(得分:0)
创建文件-res / xml / network_security.xml
在network_security.xml->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">192.168.0.101</domain>
</domain-config>
</network-security-config>
打开AndroidManifests.xml:
android:usesCleartextTraffic="true" //Add this line in your manifests
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:theme="@style/AppTheme">
答案 24 :(得分:0)
答案 25 :(得分:0)
这样做是出于安全原因,您应该始终倾向于尽可能使用HTTPS(HTTP 安全)。
您可以详细了解here
针对此问题,有多种解决方案,具体取决于您的情况。
服务器端::您应该向该服务器添加HTTPS支持,并使用HTTPS代替HTTP。如今,您甚至可以使用LetsEncrypt和others等服务免费免费做到这一点
客户端:如果您使用的是HttpURLConnection
软件包中的java.net
,则可以切换到HttpsURLConnection
软件包中的java.net.ssl
如果API不完全相同,那么切换应该毫不费力。
如果您正在与之通信的服务支持HTTPS(很可能是这样),则可以将请求URL从http://abc.xyz
更改为https://abc.xyz
。
作为最后的选择,如果要与之通信的第三方服务不支持HTTPS或任何其他形式的安全通信,则可以使用this answer,但是同样,不建议这样做,因为它会失败这项急需的安全功能的目的。
答案 26 :(得分:0)
只需在AndroidManifest.xml文件中添加android:usesCleartextTraffic =“ true”
答案 27 :(得分:0)
更改API版本9.0后,将错误消息明文HTTP流量禁止发送到YOUR-API.DOMAIN.COM(targetSdkVersion =“ 28”)。在xamarin,xamarin.android和android studio中。
两个步骤来解决xamarin,xamarin.android和android studio中的错误。
步骤1:创建文件资源/xml/network_security_config.xml
在network_security_config.xml中
<?xml version="1.0" encoding="utf-8" ?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">mobapi.3detrack.in</domain>
</domain-config>
</network-security-config>
第2步:更新AndroidManifest.xml-
在应用程序标签上添加android:networkSecurityConfig =“ @ xml / network_security_config”。 例如:
<application android:label="your App Name" android:icon="@drawable/icon" android:networkSecurityConfig="@xml/network_security_config">
答案 28 :(得分:0)
从Android 9.0(API级别28)开始,默认情况下禁用明文支持。 选项1 - 创建文件res / xml / network_security_config.xml-
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">Your URL(ex: 127.0.0.1)</domain>
</domain-config>
</network-security-config>
AndroidManifest.xml-
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:networkSecurityConfig="@xml/network_security_config"
...>
...
</application>
</manifest>
选项2- AndroidManifest.xml-
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>
答案 29 :(得分:0)
明文 是任何未加密或打算加密的传输或存储的信息。
当应用使用明文网络流量(例如HTTP(不是https ))与服务器进行通信时,可能会增加黑客入侵和篡改内容的风险。第三方可以注入未经授权的数据或泄露有关用户的信息。这就是为什么鼓励开发人员仅保护流量(例如HTTPS)的原因。 Here是解决此问题的实现方式和参考。
答案 30 :(得分:0)
在开发我的应用程序时,我也遇到相同的“不允许明文HTTP通信”错误。我在我的应用程序中使用Retrofit2进行网络调用,并且我有两个项目环境(开发和生产)。我的生产域具有通过HTTPS调用的SSL证书,而开发人员将没有https。配置已添加到构建版本中。但是当我改用dev时,就会触发此问题。因此,我为此添加了以下解决方案。
我在清单中添加了明文流量
android:usesCleartextTraffic="true"
然后,我在改造配置类OKHttp创建时间中添加了一个连接规范。
.connectionSpecs(CollectionsKt.listOf(ConnectionSpec.MODERN_TLS, ConnectionSpec.CLEARTEXT))
完整的OkHttpClient创建如下所示
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(10, TimeUnit.SECONDS)
.connectTimeout(10, TimeUnit.SECONDS)
.cache(null)
.connectionSpecs(CollectionsKt.listOf(ConnectionSpec.MODERN_TLS, ConnectionSpec.CLEARTEXT))
.addInterceptor(new NetworkInterceptor(context))
.addInterceptor(createLoggingInterceptor())
.addInterceptor(createSessionExpiryInterceptor())
.addInterceptor(createContextHeaderInterceptor())
.build();
答案 31 :(得分:0)
我将Cordova 8与cordova-plugin-whitelist 1.3.4一起使用 并且它默认配置我的应用程序无法访问互联网,并且我仅在manifest.xml-> android:usesCleartextTraffic =“ true”
中添加一个参数Cordova 8中mainfest的路径已更改:platform / android / app / src / main / AndroidManifest.xml。
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" package="io.cordova.hellocordova" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<application
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:usesCleartextTraffic="true">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>
这是一个真正的愚蠢,因为很明显您的应用程序需要访问Internet...。
答案 32 :(得分:0)
升级到React Native 0.58.5或更高版本。
他们在RN 0.58.5中的配置文件中有includeSubdomain
。
在Rn 0.58.5中,他们使用服务器域声明了network_security_config
。网络安全配置允许应用允许来自特定域的明文流量。因此,无需在清单文件的应用程序标记中声明android:usesCleartextTraffic="true"
来进行额外的工作。升级RN版本后,它将自动解决。
答案 33 :(得分:0)
videoView 无法打开此视频 在线视频
创建文件 res/xml/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>
</network-security-config>
应用程序下的AndroidManifest.xml文件中的新增内容:
android:networkSecurityConfig="@xml/network_security_config"
https://techprogrammingideas.blogspot.com/2021/02/android-code-for-displaying-video-with.html
https://youtu.be/90hWWAqfdUU
答案 34 :(得分:-1)
Oneliner解决您的问题。我假设您将URL存储在myURL字符串中。添加此行,您就完成了。 myURL = myURL.replace(“ http”,“ https”);