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