WEBサイト制作・アプリ開発・システム開発・ブランディングデザイン制作に関するご相談はお気軽にご連絡ください。
構想段階からじっくりとヒアリングし、お客様の課題にあわせたアプローチ手法でお客様の“欲しかった”をカタチにしてご提案いたします。
Blog スタッフブログ
Android
システム開発
[Android][Kotlin]WebViewのtarget=_blank対応
システム開発担当のTFです。
※Android10対応(他バージョンの場合、細かい部分等が異なる事があります)
やり方
- WebViewのsetSupportMultipleWindowsをtrueにする
- WebViewのwebChromeClientの、onCreateWindowをoverrideする
- onCreateWindow内で、Intentでアプリの外に出す処理を行う
参考
サンプル
class MainActivity : AppCompatActivity() {
// WebView用の変数
lateinit var webView : WebView
override fun onCreate(savedInstanceState: Bundle?) {
// 省略
// WebViewの作成
webView = object : WebView(context){
}
// 設定
var settings = webView.settings
// setSupportMultipleWindows を trueにし、onCreateWindowが呼ばれるようにする
settings.setSupportMultipleWindows(true)
// WebViewのwebChromeClient設定
webView.webChromeClient = object : WebChromeClient(){
// target=_blankで呼ばれる
override fun onCreateWindow(
view: WebView?,
isDialog: Boolean,
isUserGesture: Boolean,
resultMsg: Message?
): Boolean {
// Intentでアプリ外に出す
val result = view!!.hitTestResult
val data = result.extra
val context = view!!.context
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(data))
context.startActivity(browserIntent)
return false
}
}
}
}