調べた経緯
teratailでLinkify.addLinksで自動リンク化したものをタップした時にダイアログで
遷移確認のダイアログを出したいとの質問があったので調べた。
解決方法
タップ時、ブラウザに飛ばそうとしてIntentでoverride fun startActivity(intent: Intent?)
に入ってくるので
そこでキャッチしてあげれば良い。
override fun startActivity(intent: Intent?) {
// とりあえず、アラートダイアログから飛んできたときとそれ以外のときを判別
val alertFlg = intent?.getBooleanExtra("alert", false)
// アラートダイアログから飛んできてる場合はそのままブラウザを開かせる
if(alertFlg!!){
// こいつが呼ばれるとブラウザが開く
super.startActivity(intent)
return
}
// ダイアログを表示する
val urlData = intent.data
AlertDialog.Builder(this)
.setMessage("アプリを離れます")
.setPositiveButton("OK") { _, _->
val urlStr = Uri.parse(urlData.toString())
val myIntent = Intent(Intent.ACTION_VIEW, (Uri.parse(urlStr.toString())))
myIntent.putExtra("alert", true)
startActivity(myIntent)
}
.setNegativeButton("キャンセル", null)
.show()
}
実際に動かす際にはもう少し配慮するコードを書く必要がありそうだが
とりあえずキャッチしてダイアログを出すところまでは上記でできる。