Chrome 第三方自動填充服務更新公告

Chrome 第三方自動填充服務更新公告

Chrome 第三方自動填充服務更新公告

2024 年 10 月,我們曾宣布 Chrome 131 版本將允許 Android 上的第三方自動填充服務(例如密碼管理器)原生地自動填充網頁表單。根據自動填充服務開發者的反饋,我們決定調整時程,從 Chrome 135 起支援第三方自動填充服務。

Chrome 原生支援 Android 上的第三方自動填充服務,意味著使用者將能夠在 Chrome 中直接使用自己喜愛的密碼管理器或自動填充工具,而無需依賴各種變通方案或擴充功能。這一改動有望顯著提升使用第三方自動填充服務的 Android 使用者的體驗與安全性。

新增功能亮點

基於開發者的反饋,我們修正了若干問題,並致力於讓新設定更容易被發現。為了實現這些目標,我們新增了以下功能:

  • 查詢 Chrome 設定:能夠檢查使用者是否選擇使用第三方自動填充服務
  • 深度連結至 Chrome 設定頁面:讓使用者可以直接跳轉至設定頁面啟用第三方自動填充服務

1. Android 清單檔 (Manifest) 宣告

這段程式碼用於宣告權限與查詢目標頻道,讓應用程式能讀取 Chrome 的相關設定:

<uses-permission android:name="android.permission.READ_USER_DICTIONARY"/>
<queries>
  <!-- 查詢 Chrome Beta 版本: -->
  <package android:name="com.chrome.beta" />

  <!-- 查詢 Chrome 穩定版本: -->
  <package android:name="com.android.chrome" />
</queries>
    

2. 透過 ContentResolver 讀取 Chrome 設定

這段 Java 程式碼展示如何利用 Android 的 ContentResolver 建立內容 URI 並查詢 Chrome 是否啟用了第三方自動填充模式:

// 定義 Chrome 頻道的 package 名稱(此處為 Chrome 穩定版)
final String CHROME_CHANNEL_PACKAGE = "com.android.chrome";

// 定義 ContentProvider 的名稱
final String CONTENT_PROVIDER_NAME = ".AutofillThirdPartyModeContentProvider";

// 定義查詢欄位
final String THIRD_PARTY_MODE_COLUMN = "autofill_third_party_state";

// 定義 URI 路徑
final String THIRD_PARTY_MODE_ACTIONS_URI_PATH = "autofill_third_party_mode";

// 建立內容 URI
final Uri uri = new Uri.Builder()
                  .scheme(ContentResolver.SCHEME_CONTENT)
                  .authority(CHROME_CHANNEL_PACKAGE + CONTENT_PROVIDER_NAME)
                  .path(THIRD_PARTY_MODE_ACTIONS_URI_PATH)
                  .build();

// 使用 ContentResolver 查詢設定
final Cursor cursor = getContentResolver().query(
                  uri,
                  /* projection = */ new String[] { THIRD_PARTY_MODE_COLUMN },
                  /* selection = */ null,
                  /* selectionArgs = */ null,
                  /* sortOrder = */ null);

// 將游標移到第一筆記錄(取得查詢結果)
cursor.moveToFirst(); 

// 取得欄位索引
int index = cursor.getColumnIndex(THIRD_PARTY_MODE_COLUMN);

if (0 == cursor.getInt(index)) {
  // [提示] 回傳 0:第三方模式已關閉,Chrome 將使用內建密碼管理器(新用戶預設狀態)。
} else {
  // [提示] 回傳 1:第三方模式已啟用,Chrome 會將所有自動填充請求轉發至 Android Autofill。
}
    

3. 深度連結至 Chrome 設定頁面

這段程式碼展示如何使用 Android Intent 來深度連結至 Chrome 的設定頁面,讓使用者可以直接開啟並配置第三方自動填充服務:

// 建立用於開啟 Chrome 設定頁面的 Intent
Intent autofillSettingsIntent = new Intent(Intent.ACTION_APPLICATION_PREFERENCES);
autofillSettingsIntent.addCategory(Intent.CATEGORY_DEFAULT);
autofillSettingsIntent.addCategory(Intent.CATEGORY_APP_BROWSER);
autofillSettingsIntent.addCategory(Intent.CATEGORY_PREFERENCE);

// 使用選擇器調用該 Intent,讓使用者選擇欲配置的 Chrome 頻道;
// 若只有一個瀏覽器能響應此 Intent,則自動跳過選擇器。
Intent chooser = Intent.createChooser(autofillSettingsIntent, "選擇 Chrome 頻道");
startActivity(chooser);

// 若呼叫端已明確知道要配置的 Chrome 頻道,
// 可直接為 Intent 加上 package hint,例如:
autofillSettingsIntent.setPackage("com.android.chrome");
startActivity(autofillSettingsIntent);
    

更新時程

為回應使用者與開發者的反饋,並給予自動填充服務開發者充足的調整時間,我們對原定計劃進行了調整。未來,使用者必須在 Chrome 設定中選擇其他自動填充服務,才能確保其自動填充體驗不受影響。新設定將於 Chrome 135 中推出,建議自動填充服務鼓勵使用者切換該設定,以確保在 Android 上獲得最佳體驗。同時,Chrome 計劃於 2025 年夏季停止支援相容模式。

具體時程:

  • 2025 年 3 月 5 日:Chrome 135 Beta 版發布
  • 2025 年 4 月 1 日:Chrome 135 穩定版上線
  • 2025 年夏季:Chrome 將停止支援相容模式

張貼留言

0 留言