ホワイトリストに登録したドメインのサイト以外、開こうとした瞬間に強制終了して元々開いてたアプリに制御を戻す
みたいなオリジナルブラウザ作ろうと思ってるが、Webviewでいけるかな
edit
回答案を表示
expand_more
volume_up
WebViewでもホワイトリストに登録したドメイン以外のサイトを開こうとした瞬間に強制終了し、元のアプリに戻るブラウザを作成することは可能です。
以下に、その基本的な実装方法の概要を示します。
- ホワイトリストの作成:
アプリ内にホワイトリストとして許可するドメインのリストを作成します。
リストは、配列やデータベースなど、適切な方法で管理します。
- WebViewClientの設定:
WebViewClient を継承したクラスを作成し、shouldOverrideUrlLoading メソッドをオーバーライドします。
このメソッド内で、開こうとしているURLがホワイトリストに含まれているかどうかを判定します。
- 強制終了とアプリ復帰の実装:
ホワイトリストに含まれていないURLの場合、以下の処理を行います。
WebView を Activity から削除します。
Activity を終了し、元のアプリに戻ります。
必要に応じて、警告メッセージを表示することもできます。
コード例 (Kotlin):
Kotlin
class MyWebViewClient : WebViewClient() {
private val whiteList = listOf("example.com", "example.org") // ホワイトリスト
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
val url = request?.url.toString()
if (whiteList.any { url.contains(it) }) {
return false // ホワイトリスト内のURLは許可
} else {
// ホワイトリスト外のURLは強制終了
(view?.parent as? ViewGroup)?.removeView(view)
(view?.context as? Activity)?.finish()
return true
}
}
}
コードは注意してご使用ください。
content_copy
注意点:
WebViewの設定でJavaScriptを有効にする必要がある場合があります。
強制終了時のユーザーエクスペリエンスを考慮し、適切なメッセージを表示するなどの工夫が必要です。
セキュリティ上の観点から、ホワイトリストの管理には注意が必要です。
WebViewを使ったブラウザ開発の経験があれば、比較的簡単に実装できるでしょう。もしWebViewの経験がない場合は、まずはWebViewの基本的な使い方を学習してから取り組むことをおすすめします。