クリエイターの教科書

ChatGPT, Stable Diffusion, Visual Studio, Excelなど教科書

【アンドロイドスタジオの教科書】WebViewの利用 ローカルファイルの移動は?ERR_CLEARTEXT_NOT_PERMITTED?

アンドロイドスタジオでアプリを作るときは、情報系のアプリであれば、HTMLを表示するWebViewを入れて、HTMLページの推移で見せると楽です。

WebViewの利用

現在最もよく使われているであろうHTMLの表示のためのコンポーネントです。

 

準備

ネット接続の許可が必要。

 

「manifests>AndroidManifest.xml」でネット接続に許可を行う「<uses-permission android:name="android.permission.INTERNET" />」を追加して保存します。

 

コンポーネントをレイアウトに入れておきます。

WidgetにあるWebviewをレイアウトへドラッグ。IDを「webview1」などにします。

 

webviewの設定は

<WebView
android:id="@+id/webview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:ignore="MissingConstraints"
tools:layout_editor_absoluteX="1dp"
tools:layout_editor_absoluteY="1dp" />

のようにし、上下左右は自動で調節するようにしておきます。

 

 

スクリプト

on createに

static final String URL = "https://google.com";
private WebView webView;

webView = (WebView) findViewById(R.id.webview1);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl(URL);

を追加して指定ページが表示されればOK。

 

 

リソースのHTMLを使う

リソースのHTMLを表示させるには、

「app>new>folder>assets folder」でアセットフォルダを追加。

 

既成のファイルをドロップしようとしたらうまくいかず。

そこに新規ファイル「top.html」のようなものを作成してHTMLを記述します。

 

最後にプログラム内のURLを「val URL ="file:///android_asset/top.html"」のように指定します。

 

グーグルマップの地図の埋め込みは一応できそうです。

外へのリンクは普通にジャンプできました。

 

リソース内のファイルのリンクですが、リソース名を「****.html」にしておけば、その名前への移動でちゃんとジャンプできました。

 

 

スクロールバー

「fadeScrollbars」を「false」にすると常時表示。

 

Javascriptと連携

Javascriptからアンドロイド側へアクセスできます。

やり方は以下。

WebView でのウェブアプリの作成  |  Android デベロッパー  |  Android Developers

 

 

外部ブラウザを開く

イベントをOverwriteし特定のURLの場合の処理を記述するといいようです。

WebViewから外部ブラウザを起動する時のActivityNotFoundException - Qiita

 

 

 

WebViewの不具合

ERR_CLEARTEXT_NOT_PERMITTED?

WebViewでハイパーリンクを押したら出たエラー。

 

HTTPS化していないサイトに出るので、HTTPS化したリンクを指定しましょう。

 

このブログは、ネットや書籍上の情報、個人の体験や感想を中心にまとめたものです。 正確性を期していはいますが、間違い・誤訳等あるかもしれません。 当サイトの情報によって生じたいかなる損失について一切の責任を負わないものとします. あらかじめご了承ください。

プライバシーポリシー |〇利用規約 |〇問い合わせ