Androidのアプリで作業を始めているので、あまり持っていません。これまでのところ、私が持っているのはWebViewだけです。プロジェクトをAndroid Studioで作成し、プロジェクトを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としてセットアップされたエミュレーターでアプリをテストしています。
任意の助けをいただければ幸いです。ありがとうございました。
解決策:
application
タグに次の行を追加します。
Android:usesCleartextTraffic="true"
以下に示すように:
<application
....
Android:usesCleartextTraffic="true"
....>
それが役に立てば幸い。
「 https://darkorbit.com/ 」を呼び出すと、サーバーは「www」が欠落していると判断し、「 http://www.darkorbit.com/ "、その後" https://www.darkorbit.com/ "にすると、WebView呼び出しは「http」呼び出しであるため、最初のリダイレクトでブロックされます。代わりに「 https://www.darkorbit.com/ 」を呼び出すと、問題が解決します。