Android 開發人員有時需要暫時性的網頁體驗,才能滿足應用程式需求。暫時性自訂分頁是一種專屬的自訂分頁,可在應用程式中啟動完全隔離的網路瀏覽器。這類分頁可用於驗證策略,但不應將登入狀態與瀏覽器同步,也不應保留資料,例如私密瀏覽模式。
根據預設,自訂分頁會分享使用者瀏覽器的狀態和功能。在暫時性自訂分頁中,Cookie、快取檔案、瀏覽記錄、憑證和其他資料只會存在於工作階段例項的範圍內。關閉自訂分頁活動後,系統會刪除資料,且不會留下任何痕跡。
與自訂分頁一樣,您可以透過動作和 UI 主題自訂暫時性自訂分頁。如果您已使用 Auth Tab 進行驗證策略,可以將暫時性瀏覽功能加入啟動意圖,為程序增添另一層隱私保護機制。
暫時性自訂分頁可在 Chrome 130 以上版本使用,而且只要一行程式碼就能完成例項化。針對無法使用這項功能的使用者,您可以驗證是否已啟用暫時性瀏覽功能,並順暢地整合備用替代方案。
啟動暫時性工作階段
臨時性自訂分頁需要 AndroidX 瀏覽器程式庫。您可以在專案 build.gradle
檔案的依附元件區段中新增 AndroidX 瀏覽器程式庫。這些 API 可在 Alpha 版本中使用。在建構檔案中新增下列內容:
dependencies {
implementation 'androidx.browser:browser:1.9.0-alpha01'
}
如要建立暫時性瀏覽工作階段,請使用 CustomTabsIntent
中提供的自訂 setter:
// In your activity
String url = "https://developers.android.com";
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder()
.setEphemeralBrowsingEnabled(true)
.build();
customTabsIntent.launchUrl(MainActivity.this, Uri.parse(url));
由於標準 Chrome Custom Tabs 實作項目中的意圖額外項目會觸發暫時性瀏覽功能,因此您可以像新增一般自訂分頁一樣新增自訂項目。
// Add customizations
String url = "https://developers.android.com";
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder()
.setEphemeralBrowsingEnabled(true)
.setUrlBarHidingEnabled(false)
.setShareState(CustomTabsIntent.SHARE_STATE_OFF)
.setCloseButton(BitmapFactory.decodeResource(getResources(), R.drawable.ic_back_arrow))
.build();
customTabsIntent.launchUrl(MainActivity.this, Uri.parse(url));
如果開發人員使用 Auth 分頁,請將暫時性瀏覽設定器新增至 AuthTabIntent
:
// Add ephemeral browsing to Auth Tab
AuthTabIntent authTabIntent = new AuthTabIntent.Builder()
.setEphemeralBrowsingEnabled(true)
.build();
authTabIntent.launch(launcher, uri, redirectScheme);
部分自訂設定會在暫時性分頁中遭到修改或無法使用:
- 系統不會在暫時性工作階段中記錄歷史記錄。
- 使用者無法下載目前的網頁。
- 無法長按連結,在新的 Chrome 分頁中開啟連結。
- 使用溢位選單在預設瀏覽器中開啟目前頁面的選項,會以無痕模式啟動瀏覽器視窗。
改用先前的實作方式
並非所有使用者的裝置都能啟動暫時性自訂分頁。如要處理這些情況,開發人員可以使用 CustomTabsClient
查詢基礎瀏覽器,判斷是否支援暫時性瀏覽功能。這需要與 CustomTabsClient
建立服務連線。如要完成這項操作,請啟動新的 CustomTabsServiceConnection
,以便在繫結成功後存取提供的 CustomTabsClient
。
// in your activity
CustomTabsServiceConnection connection = new CustomTabsServiceConnection() {
@Override
public void onCustomTabsServiceConnected(@NonNull ComponentName name, @NonNull CustomTabsClient client) {
CustomTabsSession session = client.newSession(null);
try {
if (session.isEphemeralBrowsingSupported(Bundle.EMPTY)) {
// launch ephemeral tab
} else {
// fallback
}
} catch (RemoteException e) {
// fallback
}
}
@Override
public void onServiceDisconnected(ComponentName componentName) { }
};
CustomTabsClient.bindCustomTabsService(this, "com.android.chrome", connection);
如果應用程式服務對象的使用者尚未取得暫時性自訂分頁存取權,則可使用其他方法,例如停用快取功能的 WebView。如需利用暫時性自訂分頁並改用 WebView 的實作範例,請參閱 Android 瀏覽器輔助程式程式庫。