Android
 Computer >> コンピューター >  >> プログラミング >> Android

AndroidでWebViewのセッションストレージを有効にする方法【サンプルコード付き】

このチュートリアルでは、AndroidアプリのWebViewでWebストレージ(localStoragesessionStorage)を有効にする方法を、実際のサンプルコードを使ってステップごとに解説します。WebViewはデフォルトではDOMストレージが無効になっているため、JavaScript側でデータを保存したい場合は、明示的に設定を有効化する必要があります。


手順1:新しいプロジェクトを作成する

Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目を入力して、新しいプロジェクトを作成してください。

手順2:レイアウトファイル(activity_main.xml)を編集する

res/layout/activity_main.xml に以下のコードを記述します。

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
   xmlns:app = "https://schemas.android.com/apk/res-auto"
   xmlns:tools = "https://schemas.android.com/tools"
   android:layout_width = "match_parent"
   android:gravity = "center"
   android:layout_height = "match_parent"
   tools:context = ".MainActivity"
   android:orientation = "vertical">
   <WebView
      android:id = "@+id/web_view"
      android:layout_width = "match_parent"
      android:layout_height = "match_parent" />
</LinearLayout>

上記のレイアウトでは、tutorialspoint.com のページを表示するためのWebViewを画面全体に配置しています。

手順3:MainActivity.java を編集する

src/MainActivity.java に以下のコードを記述します。

package com.example.myapplication;
import android.app.ProgressDialog;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
    @RequiresApi(api = Build.VERSION_CODES.P)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final ProgressDialog progressDialog = new ProgressDialog(this);
        progressDialog.setMessage("Loading Data...");
        progressDialog.setCancelable(false);
        WebView web_view = findViewById(R.id.web_view);
        web_view.requestFocus();
        web_view.getSettings().setLightTouchEnabled(true);
        web_view.getSettings().setJavaScriptEnabled(true);
        web_view.getSettings().setGeolocationEnabled(true);
        web_view.setSoundEffectsEnabled(true);
        web_view.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
        web_view.getSettings().setUseWideViewPort(true);
        // Webストレージ(localStorage / sessionStorage)を有効化
        web_view.getSettings().setDomStorageEnabled(true);
        web_view.loadUrl("https://www.tutorialspoint.com/");
        web_view.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress) {
                if (progress < 100) {
                    progressDialog.show();
                }
                if (progress == 100) {
                    progressDialog.dismiss();
                }
            }
        });
    }
}

ここでのポイントは、setDomStorageEnabled(true) の呼び出しです。この設定によってWebView内でDOMストレージが有効になり、JavaScriptから localStoragesessionStorage の両方が利用できるようになります。さらに、WebChromeClientonProgressChanged() を利用することで、ページ読み込み中はプログレスダイアログを表示し、読み込みが完了(100%)したら自動的に閉じるようにしています。

手順4:AndroidManifest.xml を編集する

外部サイトを読み込むために、AndroidManifest.xml にインターネット権限を追加します。

<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android = "https://schemas.android.com/apk/res/android"
    package = "com.example.myapplication">
    <uses-permission android:name = "android.permission.INTERNET"/>
    <application
        android:allowBackup = "true"
        android:icon = "@mipmap/ic_launcher"
        android:label = "@string/app_name"
        android:roundIcon = "@mipmap/ic_launcher_round"
        android:supportsRtl = "true"
        android:theme = "@style/AppTheme">
        <activity android:name = ".MainActivity">
            <intent-filter>
                <action android:name = "android.intent.action.MAIN" />
                <category android:name = "android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

アプリを実行して確認する

それでは、アプリを実行してみましょう。実機のAndroid端末をPCに接続しておいてください。Android Studioでプロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。実行デバイスとして接続したモバイル端末を選択すると、端末に以下のようにWebViewの画面が表示されます。

AndroidでWebViewのセッションストレージを有効にする方法【サンプルコード付き】

  1. Androidでグレースケールモードを有効にする方法|バッテリー節約とスマホ依存対策にも

    Android 10には、多くのユーザーの心をつかんだ非常にクールなダークモードが搭載されました。見た目が美しいだけでなく、バッテリー消費も大幅に抑えられるのが魅力です。反転カラーテーマは、多くのアプリの背景を占めていたまぶしい白を黒に置き換え、画面を構成するピクセルの色強度と輝度を大きく下げることで、消費電力を削減します。そのため、特に室内や夜間にスマートフォンを使う際には、ダークモードへの切り替えを望む人が多いのです。FacebookやInstagramといった人気アプリも続々とダークモードに対応しています。 しかし、この記事のテーマはダークモードではありません。今回は「グレースケールモー

  2. Androidで「Always On Display(常時表示)」を有効にする方法【標準機能・アプリ対応】

    Androidデバイスには、実際に使ってみるまで必要性に気づかない新機能が次々と搭載されています。その代表格が「Always On(常時表示)」機能です。この機能は当初Samsung端末向けに提供されていましたが、現在では多くのAndroidスマートフォンに搭載されるようになりました。 Always On Displayを有効にすると、画面を常に点灯させたまま時刻や重要な通知を一目で確認できます。また、黒い背景に暗めの表示となるため、バッテリー消費も最小限に抑えられるのが魅力です。本記事では、AndroidでAlways On Displayを有効にする方法を詳しく解説します。 Androi