1. ホーム
  2. android

[解決済み] HTTPSなのにWebViewにERR_CLEARTEXT_NOT_PERMITTEDが表示される [重複]。

2022-04-22 23:22:49

質問

Androidでアプリを作り始めたので、あまりないんです。今のところあるのはWebViewだけです。Android Studioでプロジェクトを作成したら、プロジェクトがAndroid InstantAppとして設定された。なぜ、どのようにかはわかりませんが、推測するに、プロジェクトを作成するときにそのためのオプションを見落としていたのだと思います。

WebViewからnet::ERR_CLEARTEXT_NOT_PERMITTEDというエラーが表示されました。このエラーをググってみると、アプリがInstantAppの場合、WebViewは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を表示しているところでは、"The webpage at http://darkorbit.com/ " couldn't be loaded because: net::ERR_CLEARTEXT_NOT_PERMITTED のため、読み込めませんでした。

のサイトで、" と書かれていることに注意してください。 http://darkorbit.com/ ..."ではなく、"...のサイト。 https://darkorbit.com/ ..."URLの文字列がハードコードされていて、"と書いてあるにもかかわらず。 https://darkorbit.com/ "。また、Android 9 を搭載した Google Pixel 2 として設定したエミュレータ上でアプリをテストしています。

何かお手伝いいただけると幸いです。ありがとうございます。

解決方法は?

解決方法

以下の行を application タグを使用します。

android:usesCleartextTraffic="true"

以下に示すとおりです。

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

UPDATEです。 などのネットワークセキュリティ設定をしている場合。 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

お役に立てれば幸いです。