LoginSignup
0
2

More than 3 years have passed since last update.

android webviewをchromeみたいに使う

Last updated at Posted at 2020-07-29

まずは全体のコードはこんなかんじです。

MainActivity.kt
package com.sample.android.webview

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.KeyEvent
import android.view.WindowManager
import android.webkit.WebView
import android.webkit.WebViewClient
import com.sample.android.webview.R

class MainActivity  : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val myWebView: WebView = findViewById(R.id.webview)

        // ポイント1,JavaScriptを有効化
        myWebView.getSettings().setJavaScriptEnabled(true);

        // Web Storage を有効化
        myWebView.getSettings().setDomStorageEnabled(true);

        // HTML5 Video support のため
        // Hardware acceleration on
        getWindow().setFlags(
            WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
            WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED
        );

        // ポイント2,ページナビゲーションの処理
        myWebView.webViewClient = WebViewClient()

        myWebView.loadUrl("https://yahoo.co.jp")
    }

    // ポイント3, ウェブページ履歴を操作する
    override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
        val myWebView: WebView = findViewById(R.id.webview)
        if (keyCode == KeyEvent.KEYCODE_BACK && myWebView.canGoBack()) {
            myWebView.goBack()
            return true
        }
        return super.onKeyDown(keyCode, event)
    }
}

ポイント1、JavaScriptを有効にする

myWebView.getSettings().setJavaScriptEnabled(true);

ポイント2、ページ ナビゲーションの処理

リンクを開いたときにブラウザが開かないようにします。

 myWebView.webViewClient = WebViewClient()

ポイント、3ウェブページ履歴を操作する

WebView が URL の読み込みをオーバーライドすると、アクセスしたウェブページの履歴が自動的に蓄積されます。履歴を前後に移動するには、goBack() および goForward() を使用します。


override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
    // Check if the key event was the Back button and if there's history
    if (keyCode == KeyEvent.KEYCODE_BACK && myWebView.canGoBack()) {
        myWebView.goBack()
        return true
    }
    // If it wasn't the Back key or there's no web page history, bubble up to the default
    // system behavior (probably exit the activity)
    return super.onKeyDown(keyCode, event)
}

以上です。

参考にさせて頂いたサイト
https://developer.android.com/guide/webapps/webview?hl=ja

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2