Android 聯絡人選擇工具

Android 聯絡人挑選器提供標準且可保護隱私權的介面,讓使用者與應用程式分享特定聯絡人。這項功能在 Android 17 中推出,可做為廣泛 READ_CONTACTS 權限的替代方案,且無需權限。

應用程式可透過聯絡人選擇工具要求存取特定聯絡人資料,例如電話號碼或電子郵件地址。使用者選取要分享的聯絡人,系統只會授予應用程式這些詳細資料的暫時讀取權限。

建築

聯絡人選擇工具包含兩個主要元件:

  • 選擇器 UI 應用程式:這個元件是供使用者選取聯絡人的介面。
  • 工作階段供應商:這個元件會做為後端服務,管理臨時存取工作階段。

聯絡人選擇工具流程圖

圖 1. 流程圖

挑選器 UI

Picker UI 會處理聯絡人選取的使用者介面,並直接查詢聯絡人供應商,根據要求的資料類型填入檢視畫面。支援的檢視畫面包括:

  • 僅限電話號碼:使用者介面會顯示含有電話號碼的聯絡人。
  • 僅限電子郵件:使用者介面會顯示含有電子郵件地址的聯絡人。
  • 自訂聯絡資訊:使用者介面會顯示符合特定要求資料欄位的聯絡人。

此外,使用者介面還支援下列功能:

  • 依字母順序排序的清單:聯絡人會依字母順序排序,並移除重複項目。
  • 聯絡人顯示圖片:UI 會顯示聯絡人相片或顯示圖片。
  • 我的最愛:「我的最愛」類別會顯示在聯絡人清單頂端。
  • 個人資料切換器:這項功能可讓使用者從不同使用者個人資料 (例如工作與私人) 選取聯絡人。
  • 單選和複選:系統支援單選和複選模式 (預設上限為 50,最多為 100)。
  • 選取預覽:使用者可以在確認前預覽及管理所選聯絡人。
  • 快速捲動:這項功能可快速瀏覽聯絡人清單。
  • 搜尋:你可以使用搜尋列尋找特定聯絡人。
  • 隱私權橫幅和隱私權詳細資料頁面:強制性通知會告知使用者應用程式要求存取哪些資料欄位 (例如電話號碼、電子郵件地址)。

工作階段供應商

工作階段供應商 (packages/providers/ContactsProvider) 是用戶端應用程式和聯絡人供應商之間的安全中介。

  • 角色:只有在使用 Intent.ACTION_PICK_CONTACTS 啟動挑選器時,才使用工作階段供應器。
  • 工作階段管理:使用者選取聯絡人時,挑選器 UI 會將選取資料 (對應至用戶端的 UID) 寫入工作階段供應商。
  • 資料存取權:供應器會將 content://com.android.providers.contacts.picker.sessions URI 傳回給挑選工具。挑選器會先套用適當的讀取標記,再將 URI 傳回給用戶端應用程式。這個 URI 會授予使用者選取特定資料欄位的暫時性細部讀取權限,不會公開所有聯絡人資料。
  • 具備特殊權限的存取權:android.permission.MANAGE_CONTACTS_PICKER_SESSION 簽章和具備特殊權限的權限可保護工作階段供應商的寫入存取權,確保只有受信任的系統挑選器可以建立工作階段。

整合

硬體製造商和合作夥伴必須在搭載 Android 17 以上版本的建構版本中加入 Android 聯絡人選擇工具。

支援的意圖

  • Intent.ACTION_PICK_CONTACTS:建議指定 Android 17 以上版本的應用程式使用這個意圖。
  • Intent.ACTION_PICK:為保持回溯相容而持續維護。系統會自動將這些要求,轉送至支援 MIME 類型 (電子郵件、電話或聯絡人) 的新挑選器。

工作階段管理

為維護裝置健康狀態和隱私權,工作階段供應商會強制執行嚴格的資料清除政策:

  • 清除工作:系統工作 (CleanupJobService) 會定期執行,移除超過 24 小時的會期資料。
  • 資料列限制:為避免過度使用儲存空間用量,工作階段供應商表格最多只能有 5000 列。如果表格達到這個大小,系統會在插入新的工作階段資料前,自動修剪最舊的資料列。
  • 保留設定:工作階段資料是暫時性的。用戶端應用程式應在收到傳回的聯絡人資料後立即保存。

權限

如要寫入工作階段供應商,必須具備 android.permission.MANAGE_CONTACTS_PICKER_SESSION 權限,這項權限僅限 Android 聯絡人選擇工具套件使用。

自訂和法規遵循

合作夥伴可以自訂字型和顏色等視覺元素,但實作內容必須遵守 Android CDD 第 3.18.2 節 (待定)。

驗證

合作夥伴必須使用 Compatibility Test Suite (CTS) 和 Google 行動服務 Test Suite (GTS) 驗證導入作業。