【Kotlin/Android Studio】WebViewでアプリ内で画面遷移する方法!

この記事からわかること
- Kotlin/Android StudioでWebViewの使い方
- ブラウザを起動させずにアプリ内で遷移させる方法
- WebViewClientのshouldOverrideUrlLoadingメソッド
index
[open]
\ アプリをリリースしました /
参考文献:公式リファレンス:WebView でのウェブアプリの作成
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
WebViewでアプリ内で画面遷移する方法
WebViewでは画面遷移をしようとするとアプリ内では実行することができずデバイスのブラウザアプリが起動して表示されます。

せっかくアプリ内で表示していたのにいちいちブラウザアプリが起動していては意味が無いのでアプリ内で画面遷移するようにしていきます。
shouldOverrideUrlLoadingメソッド
WebViewではURLを開くときにデフォルトでホストアプリケーション(ブラウザアプリ)で実行されるように設定になっています。これを防ぎアプリ内で画面遷移させるにはMyWebViewClient
のshouldOverrideUrlLoadingメソッド
メソッドでfalse
を渡します。shouldOverrideUrlLoadingメソッド
メソッドは制御するアプリをコントロールする役割をもちtrue
に渡すとホストアプリケーション(ブラウザアプリ)、false
を渡すと自身のアプリで起動させます。
WebViewClient
を継承した独自のクラスを生成し、shouldOverrideUrlLoading
メソッドをオーバーライドしてfalse
を返すようにしておきます。
class MyWebViewClient : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
return false
}
}
WebViewの実装自体は以下の記事を参考にしてください。
続いてWebView
を表示させるWidgetからsetWebViewClient
メソッドを使用して先ほど作成したクラスのインスタンスを渡します。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val myWebView: WebView = findViewById(R.id.web_view)
myWebView.settings.javaScriptEnabled = true
val client = MyWebViewClient()
myWebView.setWebViewClient(client)
myWebView.loadUrl("https://appdev-room.com/")
}
}
これでブラウザアプリを起動することなくアプリ内で画面遷移できるようになります。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。