WebView显示ERR_CLEARTEXT_NOT_PERMITTED,尽管站点是HTTPS [英] WebView showing ERR_CLEARTEXT_NOT_PERMITTED although site is HTTPS

查看:93
本文介绍了WebView显示ERR_CLEARTEXT_NOT_PERMITTED,尽管站点是HTTPS的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm starting to work on an app on Android, so I don't have much. All I have is just a WebView so far. I created the project in Android Studio, and my project got set as an Android InstantApp. I'm not sure why/how, but my guess is that I overlooked an option for it when creating the project.

我从WebView收到一条错误消息,说net :: ERR_CLEARTEXT_NOT_PERMITTED.当我搜索错误时,我看到当一个应用程序是InstantApp时,WebViews只能加载HTTPS站点,而不能加载HTTP站点.

I was getting an error from the WebView saying net::ERR_CLEARTEXT_NOT_PERMITTED. When I googled the error, I saw that when an app is an InstantApp, WebViews can only load sites that are HTTPS, and cannot load an HTTP site.

此应用程序的目的是成为仅用于一个站点的极其简单的Flash播放器.这是为了在运行需要Flash的游戏时具有更好的性能.该游戏位于darkorbit.com,即HTTPS.

The purpose of this app is to be an extremely simple Flash player for only one site. This is to have better performance running a game that requires Flash. This game is at darkorbit.com, which is HTTPS.

MainActivity.java:

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

and 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显示网站?

My question: How can I disable my app as an InstantApp, or how can I get this WebView to display the site?

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

I feel like it's important I mention a few other details too: In the app, where it is showing the WebView, it also says "The webpage at http://darkorbit.com/" could not be loaded because: net::ERR_CLEARTEXT_NOT_PERMITTED

提示为"...网站位于 http://darkorbit.com/ ...,而不是"...网站位于 https://darkorbit.com/ ...",即使URL是硬编码的,并显示为" https://darkorbit.com/".另外,我正在设置为运行Android 9的Google Pixel 2的模拟器上测试该应用.

Notice that is says "... site at http://darkorbit.com/ ...", and not "... site at https://darkorbit.com/ ..." even though the string for the URL is hardcoded, and says "https://darkorbit.com/". Also, I am testing the app on an emulator set up as a Google Pixel 2 running Android 9.

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

Any help would be appreciated. Thank you.

推荐答案

解决方案:

application标记中添加以下行:

android:usesCleartextTraffic="true"

如下所示:

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

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

UPDATE: If you have network security config such as: android:networkSecurityConfig="@xml/network_security_config"

不需要如上所示将纯文本流量设置为true,而是使用以下代码:

No Need to set clear text traffic to true as shown above, instead use the below code:

<?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

希望有帮助.

这篇关于WebView显示ERR_CLEARTEXT_NOT_PERMITTED,尽管站点是HTTPS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆