尽管站点是HTTPS,但WebView显示ERR_CLEARTEXT_NOT_PERMITTED

tyl*_*147 73 android android-webview

我开始在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);

    }
}
Run Code Online (Sandbox Code Playgroud)

和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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题:如何禁用我的应用程序作为InstantApp,或者如何让这个WebView显示该网站?

我觉得重要的是我也提到了其他一些细节:在应用程序中,它显示了WebView,它还说" http://darkorbit.com/上的网页"无法加载,因为:net :: ERR_CLEARTEXT_NOT_PERMITTED

请注意,即使是URL的字符串,也说"...网站http://darkorbit.com/ ...",而不是"...网站https://darkorbit.com/ ..."是硬编码,并说" https://darkorbit.com/ ".此外,我正在设置为运行Android 9的Google Pixel 2的模拟器上测试该应用.

任何帮助,将不胜感激.谢谢.

Üma*_*mån 215

解:

application标记中添加以下行:

android:usesCleartextTraffic="true"
Run Code Online (Sandbox Code Playgroud)

如下所示:

<application
    ....
    android:usesCleartextTraffic="true"
    ....>
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

  • 无法解决仍在Android Pie中显示错误 (6认同)
  • 它不适用于android:networkSecurityConfig设置 (6认同)
  • 这已经存在,并且仍然显示相同的错误!!! 1 (5认同)
  • 我还开发了一个 Webview 模板并得到了同样的错误。而且,现在解决了。谢谢 (2认同)
  • @Miguel检查您的AndroidManifest.xml中的&lt;application ...&gt;下是否有一个networkSecurityConfig。如果这样做,则可以尝试将其删除(如果不需要),也可以对其进行更改以允许您的域。这个答案可能也对您有帮助:/sf/answers/3558422031/ (2认同)

小智 10

当您调用“ https://darkorbit.com/ ”时,服务器会认为它缺少“ www”,因此它将调用重定向到“ http://www.darkorbit.com/ ”,然后重定向到“ https:// www”。 darkorbit.com/ “,因为它是” http“调用,所以您的WebView调用在第一次重定向时被阻止。您可以改用“ https://www.darkorbit.com/ ”,它将解决此问题。