gpt4 book ai didi

android - WebView 显示 ERR_CLEARTEXT_NOT_PERMITTED 尽管站点是 HTTPS

转载 作者:IT王子 更新时间:2023-10-28 23:40:51 25 4
gpt4 key购买 nike

我开始在 Android 上开发一个应用程序,所以我没有太多东西。到目前为止,我所拥有的只是一个 WebView。我在 Android Studio 中创建了项目,我的项目被设置为 Android InstantApp。我不确定为什么/如何,但我的猜测是我在创建项目时忽略了它的一个选项。

我收到来自 WebView 的错误提示 net::ERR_CLEARTEXT_NOT_PERMITTED。当我用谷歌搜索错误时,我看到当应用程序是 InstantApp 时,WebViews 只能加载 HTTPS 的站点,而不能加载 HTTP 站点。

这个应用程序的目的是成为一个非常简单的 Flash 播放器,仅用于一个站点。这是为了在运行需要 Flash 的游戏时获得更好的性能。这个游戏在darkorbit.com,是HTTPS。

MainActivity.java:

package com.tylerr147.darkorbit;

import android.content.ComponentName;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

WebView wv = findViewById(R.id.webView1);
wv.loadUrl("https://darkorbit.com/");
wv.setWebViewClient(new CustomWebViewClient());
WebSettings webSettings = wv.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setPluginState(WebSettings.PluginState.ON);

}
}

和 CustomWebViewClient.java

package com.tylerr147.darkorbit;

import android.webkit.WebView;
import android.webkit.WebViewClient;

public class CustomWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}

我的问题:如何将我的应用禁用为 InstantApp,或者如何让此 WebView 显示网站?

我觉得我还提到了一些其他细节很重要:在显示 WebView 的应用程序中,它还显示“无法加载位于 http://darkorbit.com/ 的网页”,因为:净::ERR_CLEARTEXT_NOT_PERMITTED

请注意,即使 URL 的字符串是硬编码的,并且显示为“http://darkorbit.com/”,它也会显示“... site at https://darkorbit.com/ ...”,而不是“... site at https://darkorbit.com/ ...”。此外,我正在一个设置为运行 Android 9 的 Google Pixel 2 的模拟器上测试该应用程序。

任何帮助将不胜感激。谢谢。

最佳答案

解决方案:

在您的 application 标签中添加以下行:

android:usesCleartextTraffic="true"

如下图:

<application
....
android:usesCleartextTraffic="true"
....>

更新:如果您有网络安全配置,例如:android:networkSecurityConfig="@xml/network_security_config"

不需要如上图那样将明文流量设置为true,而是使用下面的代码:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
....
....
</domain-config>

<base-config cleartextTrafficPermitted="false"/>
</network-security-config>

cleartextTrafficPermitted 设置为 true

关于android - WebView 显示 ERR_CLEARTEXT_NOT_PERMITTED 尽管站点是 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52707918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com