どうも。どっことです。今回はCustomTab(ChromeCustomTab)の使い方を紹介します。
CustomTabについて
CustomTab
はアプリ内で利用できるブラウザ機能です。CustomTabが登場する前はWebView
という機能がアプリでのブラウザとしての役目を果たしておりましたが、セキュリティや表示速度などの観点から現在はCustomTabを使うことが推奨されています。
実装
実装手順は以下の通りです。
app/build.gradle
に依存関係を追加する。-
CustomTabIntent.Builder
を使ってCustomTabIntent
を生成する。 CustomTabIntent.launchUrl
を実行する。
順番に解説していきます。
app/build.gradleを実装する
まずはapp/build.gradle
に依存関係を追加します。
dependencies {
// 既存にある dependencies に以下を追加する
implementation "androidx.browser:browser:1.8.0"
}
CustomTabIntent.Builderを生成する
次にCustomTabIntent.Builder
を使ってCustomTabIntent
を生成します。
val builder = CustomTabsIntent.Builder()
val customTabIntent = builder.build()
CustomTabIntent.launchUrlを実装する
最後にCustomTabIntentにあるlaunchUrl
関数を使って、アクセスしたいWebページを表示します。
customTabIntent.launchUrl(this@MainActivity, Uri.parse("https://www.google.co.jp/"))
その他
CustamTabの表示をカスタマイズしたい
CustomTabIntent.Builder
に対して、パラメータを設定することでカスタマイズすることができます。今回は参考欄に詳細の項目のページを記載する程度で割愛。
認証に利用したい
現在2025/4時点ではまだalpha版ですが、AuthTabIntent
が将来的に利用できるようです。
良くある認証フローでは、認証が完了したタイミングでアプリに戻るためのリダイレクトURLを発火してもらうことが一般的ですが、そのハンドリングの一部をAuthTabIntent
で制御してくれるようです。
ChromeCustomTabから戻ってきたことを検知したい
activityResultLauncher
を利用すれば実現できます。参考はこちら。
ただ前述したように、CustomTabIntent
にlaunchUrl
のインターフェースが実装されている点から、これは推奨される利用方法ではない印象です。
val intent = customTabIntent.intent.also {
it.setData(Uri.parse("https://www.google.co.jp/"))
}
// registerForActivityResult で生成したactivityResultLauncherを使って呼び出し
launcher.launch(intent)
まとめ
今回はCustomTabについて解説しました。WebViewよりも優れている点が多く、シンプルに使う分には簡単に実装できるためぜひ活用してみてください。