web-dev-qa-db-ja.com

サイトがHTTPSであるにもかかわらず、ERR_CLEARTEXT_NOT_PERMITTEDを示すWebView

Androidのアプリで作業を始めているので、あまり持っていません。これまでのところ、私が持っているのはWebViewだけです。プロジェクトをAndroid St​​udioで作成し、プロジェクトをAndroid InstantAppとして設定しました。理由/方法は定かではありませんが、プロジェクトの作成時にそのオプションを見落としていたようです。

Net :: ERR_CLEARTEXT_NOT_PERMITTEDというエラーがWebViewから表示されていました。エラーをグーグルで調べたところ、アプリがInstantAppである場合、WebViewsはHTTPSサイトのみをロードでき、HTTPサイトはロードできないことがわかりました。

このアプリの目的は、1つのサイトのみを対象とした非常にシンプルなFlashプレーヤーになることです。これは、Flashを必要とするゲームを実行する際のパフォーマンスを向上させるためです。このゲームは、HTTPSであるdarkorbit.comにあります。

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/ "のWebページはロードされた理由:net :: ERR_CLEARTEXT_NOT_PERMITTED

「... site at http://darkorbit.com/ ...」ではなく、「... site at https://darkorbit.com/ ...」URLの文字列がハードコードされていて、「 https://darkorbit.com/ 」と書かれていても。また、Android 9を実行するGoogle Pixel 2としてセットアップされたエミュレーターでアプリをテストしています。

任意の助けをいただければ幸いです。ありがとうございました。

56
tylerr147

解決策:

applicationタグに次の行を追加します。

Android:usesCleartextTraffic="true"

以下に示すように:

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

それが役に立てば幸い。

156

https://darkorbit.com/ 」を呼び出すと、サーバーは「www」が欠落していると判断し、「 http://www.darkorbit.com/ "、その後" https://www.darkorbit.com/ "にすると、WebView呼び出しは「http」呼び出しであるため、最初のリダイレクトでブロックされます。代わりに「 https://www.darkorbit.com/ 」を呼び出すと、問題が解決します。

6
Gordon