Custom Tabs を扱う
Custom Tabsはアプリ内でウェブコンテンツを表示するためのブラウザ機能。
以前使用されていた **WebView**は、セキュリティや表示速度の面で問題があるが、
Chrome Custom TabsはChromeの機能を利用するため、より高速で安全なウェブ体験をユーザーに提供できる。
Custom Tab の導入
Custom Tabsの導入手順は以下の3ステップ。
- **
app/build.gradle**に依存関係を追加する。 - **
CustomTabIntent.Builder**を使ってCustomTabIntentを生成する。 - **
CustomTabIntent.launchUrl**を実行する。
1. app/build.gradleに依存関係を追加
app/build.gradleのdependenciesスコープに以下のライブラリを追加する。
dependencies {
// 既存の dependencies に以下を追加する
implementation "androidx.browser:browser:1.8.0"
}
2. CustomTabIntent.Builderの生成
CustomTabsIntent.Builderを使用してCustomTabsIntentのインスタンスを生成する。
val builder = CustomTabsIntent.Builder()
val customTabIntent = builder.build()
3. CustomTabIntent.launchUrlを実行する
生成したCustomTabsIntentのlaunchUrl関数で、アクセスしたいWebページのURL(Uriオブジェクト)を指定し起動する。
customTabIntent.launchUrl(this@MainActivity, Uri.parse("https://www.google.co.jp/"))
Custom Tabsの表示をカスタマイズしたい
CustomTabsIntent.Builderに対して、様々なパラメータを設定することで、Custom Tabsのツールバーの色やアクションボタンなどをカスタマイズできる。詳細は公式ドキュメントを参照。
認証に利用する
OAuthなどの認証フローにCustom Tabsを利用する場合、より簡単に実装できるようにするための**AuthTabIntent**が利用可能。
従来の認証フローでは、認証完了後にアプリに戻るためのリダイレクトURLのハンドリングが必要だが、
AuthTabIntentを使うとこの処理の一部をライブラリ側で制御してくれるようになる。
参考: 認証 タブを使用して認証を簡素化する | Chrome for Developers
Custom Tabsから戻ってきたことを検知したい
CustomTabsIntent.launchUrlは結果を返さないため、Custom Tabsが閉じられたことを直接検知する公式な方法は公開されていない。
以下のようにCustomTabsIntent内のintentを取り出し、activityResultLauncherを使って起動することで実現可能だが、
これはlaunchUrlというシンプルなインターフェースが用意されている観点から、推奨される使い方ではない点に注意が必要。
val intent = customTabIntent.intent.also {
it.setData(Uri.parse("https://www.google.co.jp/"))
}
// registerForActivityResult で生成した activityResultLauncher を使って呼び出し
launcher.launch(intent)
参考
最終更新: 2025.9.28