ContactKeyClient


public interface ContactKeyClient extends HasApiKey


Contact Key API 的用戶端。

摘要

公用方法

abstract @NonNull Flow<@NonNull List<@NonNull E2eeAccountContactKeyParcelable>>
@RequiresPermission(value = "android.permission.READ_CONTACTS")
getAccountContactKeysFlow(@NonNull List<@NonNull String> accountIds)

傳回帳戶聯絡人金鑰更新的流程。

abstract @NonNull Task<@NonNull E2eeContactKeyListParcelable>
@RequiresPermission(value = "android.permission.READ_CONTACTS")
getAllE2eeContactKeys(@NonNull String lookupKey)

擷取屬於呼叫者可見應用程式的所有端對端加密聯絡人金鑰項目。

abstract @NonNull Task<@NonNull E2eeSelfKeyListParcelable>
@RequiresPermission(value = "android.permission.READ_CONTACTS")
getAllE2eeSelfKeys()

傳回呼叫者可見應用程式的所有端對端加密自我金鑰項目。

abstract @NonNull Task<@NonNull ImmutableList<@NonNull E2eeAccountContactKeyParcelable>>
@RequiresPermission(value = "android.permission.READ_CONTACTS")
getAllOwnerE2eeAccountContactKeys()

擷取屬於來電者應用程式的所有端對端加密帳戶聯絡人金鑰,無論是否與聯絡人相關聯。

abstract @NonNull Task<@NonNull E2eeContactKeyListParcelable>
@RequiresPermission(value = "android.permission.READ_CONTACTS")
getAllOwnerE2eeContactKeys()

擷取所有聯絡人的所有端對端加密聯絡人金鑰,這些金鑰屬於呼叫端應用程式。

abstract @NonNull Task<@NonNull ImmutableList<@NonNull E2eeAccountContactKeyParcelable>>
@RequiresPermission(value = "android.permission.READ_CONTACTS")
getE2eeAccountKeysForAccount(@NonNull String accountId)

擷取屬於呼叫端應用程式和呼叫端帳戶的所有端對端加密聯絡人金鑰項目 (適用於所有聯絡人)。

abstract @NonNull Task<E2eeContactKeyParcelable>
@RequiresPermission(value = "android.permission.READ_CONTACTS")
getE2eeContactKey(
    @NonNull String lookupKey,
    @NonNull String deviceId,
    @NonNull String accountId
)

根據 lookupKeydeviceIdaccountId 和推斷的呼叫端套件名稱,擷取端對端加密聯絡人金鑰項目。

abstract @NonNull Task<E2eeSelfKeyParcelable>
@RequiresPermission(value = "android.permission.READ_CONTACTS")
getE2eeSelfKey(@NonNull String deviceId, @NonNull String accountId)

根據 deviceIdaccountId 和呼叫端的推斷套件名稱,傳回端對端加密自我金鑰項目。

abstract @NonNull Task<@NonNull Integer>

傳回鍵的大小上限 (以位元組為單位)。

abstract @NonNull Task<@NonNull PendingIntent>
getOnboardingIntent(
    @NonNull OnboardingNextActivity nextActivity,
    String lookupKey,
    String packageName
)

傳回顯示 Onboarding 活動的 Intent,並標示這部裝置已顯示 Onboarding。

abstract @NonNull Task<@NonNull E2eeContactKeyListParcelable>
@RequiresPermission(value = "android.permission.READ_CONTACTS")
getOwnerE2eeContactKeys(@NonNull String lookupKey)

擷取屬於呼叫端應用程式的指定 lookupKey 所有端對端加密聯絡人金鑰項目。

abstract @NonNull Task<@NonNull E2eeSelfKeyListParcelable>
@RequiresPermission(value = "android.permission.READ_CONTACTS")
getOwnerE2eeSelfKeys()

傳回呼叫端應用程式擁有的所有端對端加密自我金鑰項目。

abstract @NonNull Task<@NonNull PendingIntent>
getScanQrCodeIntent(@NonNull String lookupKey, boolean skipOnboarding)

傳回「掃描 QR code」活動的意圖。

abstract @NonNull Task<@NonNull PendingIntent>
getScanQrCodeIntentForAccount(
    @NonNull String packageName,
    @NonNull String accountId
)

傳回特定帳戶「掃描 QR code」活動的意圖。

abstract @NonNull Task<@NonNull PendingIntent>
getShowQrCodeIntent(String packageName, boolean skipOnboarding)

傳回「顯示 QR code」活動的 Intent。

abstract @NonNull Task<@NonNull Boolean>

無論 API 是否可用,都會傳回成功完成的 Task。

abstract @NonNull Task<@NonNull Void>
@RequiresPermission(value = "android.permission.READ_CONTACTS")
registerAccountContactKeysListener(
    @NonNull List<@NonNull String> accountIds,
    @NonNull OnAccountContactKeysUpdatedListener listener
)

註冊帳戶聯絡人金鑰更新的監聽器。

abstract @NonNull Task<@NonNull Void>
@RequiresPermission(value = "android.permission.WRITE_CONTACTS")
removeE2eeAccountContactKey(
    @NonNull String deviceId,
    @NonNull String accountId
)

移除屬於來電者應用程式的端對端加密帳戶聯絡人金鑰項目。

abstract @NonNull Task<@NonNull Void>
@RequiresPermission(value = "android.permission.WRITE_CONTACTS")
removeE2eeContactKey(
    @NonNull String lookupKey,
    @NonNull String deviceId,
    @NonNull String accountId
)

移除屬於來電應用程式的端對端加密通訊錄金鑰項目。

abstract @NonNull Task<@NonNull Void>
@RequiresPermission(value = "android.permission.WRITE_CONTACTS")
removeE2eeSelfKey(@NonNull String deviceId, @NonNull String accountId)

根據 deviceId 和呼叫端的推斷套件名稱,移除端對端加密自我金鑰項目。

abstract @NonNull Task<@NonNull Boolean>

取消註冊帳戶聯絡人金鑰更新的接聽程式。

abstract @NonNull Task<@NonNull Void>
@RequiresPermission(allOf = ["android.permission.READ_CONTACTS", "android.permission.WRITE_CONTACTS"])
updateAllE2eeAccountKeys(
    @NonNull List<@NonNull E2eeAccountKeyInfo> accountKeyInfos
)

插入一批帳戶聯絡人金鑰。

abstract @NonNull Task<@NonNull Void>
@RequiresPermission(allOf = ["android.permission.READ_CONTACTS", "android.permission.WRITE_CONTACTS"])
updateOrInsertE2eeContactKey(
    @NonNull String lookupKey,
    @NonNull String deviceId,
    @NonNull String accountId,
    @NonNull byte[] keyValue
)

在端對端加密聯絡人金鑰資料表中插入新項目,或更新現有項目。

abstract @NonNull Task<@NonNull Void>
@RequiresPermission(allOf = ["android.permission.READ_CONTACTS", "android.permission.WRITE_CONTACTS"])
updateOrInsertE2eeContactKey(
    @NonNull List<@NonNull String> lookupKeys,
    @NonNull String deviceId,
    @NonNull String accountId,
    @NonNull byte[] keyValue
)

在端對端加密聯絡人金鑰資料表中插入新項目,或更新現有項目。

abstract @NonNull Task<@NonNull Void>
@RequiresPermission(value = "android.permission.WRITE_CONTACTS")
updateOrInsertE2eeSelfKey(
    @NonNull String deviceId,
    @NonNull String accountId,
    @NonNull byte[] keyValue
)

在端對端加密自訂金鑰資料表中插入新項目,或更新現有項目。

公用方法

getAccountContactKeysFlow

@RequiresPermission(value = "android.permission.READ_CONTACTS")
abstract @NonNull Flow<@NonNull List<@NonNull E2eeAccountContactKeyParcelable>> getAccountContactKeysFlow(@NonNull List<@NonNull String> accountIds)

傳回帳戶聯絡人金鑰更新的流程。

當任何帳戶 ID 的任何金鑰更新、新增或移除時,系統就會發出流程。系統會發出所提供 accountId 的所有金鑰清單,而不只是更新的金鑰。

參數
@NonNull List<@NonNull String> accountIds

要監聽更新的帳戶 ID 清單。

傳回
@NonNull Flow<@NonNull List<@NonNull E2eeAccountContactKeyParcelable>>

每當任何金鑰更新、新增或移除時,都會針對提供的 accountId 發出 E2eeAccountContactKeyParcelable 清單的流程。

擲回
com.google.android.libraries.sdkcoroutines.flow.CallbackChannelFullException

如果回呼事件的處理速度過慢。

getAllE2eeContactKeys

@RequiresPermission(value = "android.permission.READ_CONTACTS")
abstract @NonNull Task<@NonNull E2eeContactKeyListParcelablegetAllE2eeContactKeys(@NonNull String lookupKey)

擷取屬於呼叫者可見應用程式的所有端對端加密聯絡人金鑰項目。金鑰會移除 deviceIdtimeUpdatedkeyValue 資料。

參數
@NonNull String lookupKey

參照聯絡人的值

傳回
@NonNull Task<@NonNull E2eeContactKeyListParcelable>

包含端對端加密聯絡人金鑰資訊的清單,或如果找不到任何金鑰,則為空白清單。E2eeContactKeyListParcelable

getAllE2eeSelfKeys

@RequiresPermission(value = "android.permission.READ_CONTACTS")
abstract @NonNull Task<@NonNull E2eeSelfKeyListParcelablegetAllE2eeSelfKeys()

傳回呼叫者可見應用程式的所有端對端加密自我金鑰項目。金鑰會移除 deviceIdtimeUpdatedkeyValue 資料。

傳回
@NonNull Task<@NonNull E2eeSelfKeyListParcelable>

E2eeSelfKeyListParcelable,其中包含端對端加密自我金鑰資訊清單,如果找不到任何自我金鑰,則為空白清單。

getAllOwnerE2eeAccountContactKeys

@RequiresPermission(value = "android.permission.READ_CONTACTS")
abstract @NonNull Task<@NonNull ImmutableList<@NonNull E2eeAccountContactKeyParcelable>> getAllOwnerE2eeAccountContactKeys()

擷取屬於來電者應用程式的所有端對端加密帳戶聯絡人金鑰,無論是否與聯絡人相關聯。

傳回
@NonNull Task<@NonNull ImmutableList<@NonNull E2eeAccountContactKeyParcelable>>

包含端對端加密聯絡人金鑰資訊的 E2eeAccountContactKeyParcelable 物件清單,如果找不到任何金鑰,則為空白清單。

getAllOwnerE2eeContactKeys

@RequiresPermission(value = "android.permission.READ_CONTACTS")
abstract @NonNull Task<@NonNull E2eeContactKeyListParcelablegetAllOwnerE2eeContactKeys()

擷取所有聯絡人的所有端對端加密聯絡人金鑰,這些金鑰屬於呼叫端應用程式。

這個方法只會用於擷取至少有一個相關聯聯絡人的金鑰。如要擷取未與任何聯絡人建立關聯的金鑰,請改用 getAllOwnerE2eeAccountContactKeys

傳回
@NonNull Task<@NonNull E2eeContactKeyListParcelable>

包含端對端加密聯絡人金鑰資訊的清單,或如果找不到任何金鑰,則為空白清單。E2eeContactKeyListParcelable

getE2eeAccountKeysForAccount

@RequiresPermission(value = "android.permission.READ_CONTACTS")
abstract @NonNull Task<@NonNull ImmutableList<@NonNull E2eeAccountContactKeyParcelable>> getE2eeAccountKeysForAccount(@NonNull String accountId)

擷取所有聯絡人中,屬於呼叫端應用程式和呼叫端帳戶的端對端加密聯絡人金鑰項目。包括未與任何聯絡人建立關聯的金鑰。

傳回
@NonNull Task<@NonNull ImmutableList<@NonNull E2eeAccountContactKeyParcelable>>

包含端對端加密聯絡人金鑰資訊的 E2eeAccountContactKeyParcelable 物件清單,如果找不到任何金鑰,則為空白清單。

getE2eeContactKey

@RequiresPermission(value = "android.permission.READ_CONTACTS")
abstract @NonNull Task<E2eeContactKeyParcelablegetE2eeContactKey(
    @NonNull String lookupKey,
    @NonNull String deviceId,
    @NonNull String accountId
)

根據 lookupKeydeviceIdaccountId 和推斷的呼叫端套件名稱,擷取端對端加密聯絡人金鑰項目。

參數
@NonNull String lookupKey

參照聯絡人的值

@NonNull String deviceId

應用程式指定的裝置 ID

@NonNull String accountId

帳戶的應用程式指定 ID

傳回
@NonNull Task<E2eeContactKeyParcelable>

包含聯絡人金鑰資訊的 E2eeContactKeyParcelable,如果找不到聯絡人金鑰,則為空值。

getE2eeSelfKey

@RequiresPermission(value = "android.permission.READ_CONTACTS")
abstract @NonNull Task<E2eeSelfKeyParcelablegetE2eeSelfKey(@NonNull String deviceId, @NonNull String accountId)

根據 deviceIdaccountId 和呼叫端的推斷套件名稱,傳回端對端加密自我金鑰項目。

參數
@NonNull String deviceId

應用程式指定的裝置 ID

@NonNull String accountId

帳戶的應用程式指定 ID

傳回
@NonNull Task<E2eeSelfKeyParcelable>

包含端對端加密自我金鑰資訊的 E2eeSelfKeyParcelable,如果找不到自我金鑰,則為空值。

getMaxKeySizeBytes

abstract @NonNull Task<@NonNull IntegergetMaxKeySizeBytes()

傳回鍵的大小上限 (以位元組為單位)。

getOnboardingIntent

abstract @NonNull Task<@NonNull PendingIntentgetOnboardingIntent(
    @NonNull OnboardingNextActivity nextActivity,
    String lookupKey,
    String packageName
)

傳回顯示新手上路活動的 Intent,並標示新手上路畫面已顯示在這部裝置上。這需要 nextActivity,可以是字串 showscan。如果 scan,則必須提供要掃描的聯絡人 lookupKey

參數
@NonNull OnboardingNextActivity nextActivity

在 Onboarding 活動後顯示的下一個活動。必須是 showscan

String lookupKey

參照聯絡人的值。如果 nextActivityscan,則為必要欄位。

String packageName

與需要金鑰的應用程式相關聯的套件名稱 (選用)。

getOwnerE2eeContactKeys

@RequiresPermission(value = "android.permission.READ_CONTACTS")
abstract @NonNull Task<@NonNull E2eeContactKeyListParcelablegetOwnerE2eeContactKeys(@NonNull String lookupKey)

擷取屬於呼叫端應用程式的指定 lookupKey 所有端對端加密聯絡人金鑰項目。

參數
@NonNull String lookupKey

參照聯絡人的值

傳回
@NonNull Task<@NonNull E2eeContactKeyListParcelable>

E2eeContactKeyListParcelable,其中包含端對端加密聯絡人金鑰資訊清單;如果找不到任何金鑰,則為空白清單。

getOwnerE2eeSelfKeys

@RequiresPermission(value = "android.permission.READ_CONTACTS")
abstract @NonNull Task<@NonNull E2eeSelfKeyListParcelablegetOwnerE2eeSelfKeys()

傳回呼叫端應用程式擁有的所有端對端加密自我金鑰項目。

傳回
@NonNull Task<@NonNull E2eeSelfKeyListParcelable>

包含端對端加密自我金鑰資訊的 E2eeSelfKeyListParcelable,如果找不到自我金鑰,則為空白清單。

getScanQrCodeIntent

abstract @NonNull Task<@NonNull PendingIntentgetScanQrCodeIntent(@NonNull String lookupKey, boolean skipOnboarding)

傳回「掃描 QR code」活動的意圖。

參數
@NonNull String lookupKey

參照聯絡人的值

boolean skipOnboarding

目前未使用。

getScanQrCodeIntentForAccount

abstract @NonNull Task<@NonNull PendingIntentgetScanQrCodeIntentForAccount(
    @NonNull String packageName,
    @NonNull String accountId
)

傳回特定帳戶「掃描 QR code」活動的意圖。

參數
@NonNull String packageName

與使用者想驗證的帳戶相關聯的套件名稱

@NonNull String accountId

與使用者要驗證的帳戶相關聯的帳戶 ID

getShowQrCodeIntent

abstract @NonNull Task<@NonNull PendingIntentgetShowQrCodeIntent(String packageName, boolean skipOnboarding)

傳回「顯示 QR code」活動的 Intent。

參數
String packageName

與需要金鑰的應用程式相關聯的套件名稱 (選用)

boolean skipOnboarding

目前未使用。

isEnabled

abstract @NonNull Task<@NonNull BooleanisEnabled()

無論 API 是否可用,都會傳回成功完成的 Task。

如果 API 可用,傳回的工作結果會是 true,否則為 false。

系統會擷取 API 無法使用時通常會擲回的例外狀況,並改為傳回成功傳回 false 的工作。

registerAccountContactKeysListener

@RequiresPermission(value = "android.permission.READ_CONTACTS")
abstract @NonNull Task<@NonNull VoidregisterAccountContactKeysListener(
    @NonNull List<@NonNull String> accountIds,
    @NonNull OnAccountContactKeysUpdatedListener listener
)

註冊帳戶聯絡人金鑰更新的監聽器。

只要提供的任何 accountId 的任何金鑰更新、新增或移除,系統就會呼叫監聽器。系統會使用所提供 accountId 的所有金鑰清單呼叫這個函式,而不只是更新的金鑰。

參數
@NonNull List<@NonNull String> accountIds

要註冊接聽程式的帳戶 ID 清單。

@NonNull OnAccountContactKeysUpdatedListener listener

要註冊的監聽器。

removeE2eeAccountContactKey

@RequiresPermission(value = "android.permission.WRITE_CONTACTS")
abstract @NonNull Task<@NonNull VoidremoveE2eeAccountContactKey(
    @NonNull String deviceId,
    @NonNull String accountId
)

移除屬於來電者應用程式的端對端加密帳戶聯絡人金鑰項目。

參數
@NonNull String deviceId

應用程式指定的裝置 ID

@NonNull String accountId

帳戶的應用程式指定 ID

removeE2eeContactKey

@RequiresPermission(value = "android.permission.WRITE_CONTACTS")
abstract @NonNull Task<@NonNull VoidremoveE2eeContactKey(
    @NonNull String lookupKey,
    @NonNull String deviceId,
    @NonNull String accountId
)

移除屬於來電應用程式的端對端加密通訊錄金鑰項目。

參數
@NonNull String lookupKey

參照聯絡人的值

@NonNull String deviceId

應用程式指定的裝置 ID

@NonNull String accountId

帳戶的應用程式指定 ID

removeE2eeSelfKey

@RequiresPermission(value = "android.permission.WRITE_CONTACTS")
abstract @NonNull Task<@NonNull VoidremoveE2eeSelfKey(@NonNull String deviceId, @NonNull String accountId)

根據 deviceId 和呼叫端的推斷套件名稱,移除端對端加密自我金鑰項目。

參數
@NonNull String deviceId

應用程式指定的裝置 ID

@NonNull String accountId

帳戶的應用程式指定 ID

unregisterAccountContactKeysListener

@CanIgnoreReturnValue
abstract @NonNull Task<@NonNull BooleanunregisterAccountContactKeysListener(
    @NonNull OnAccountContactKeysUpdatedListener listener
)

取消註冊帳戶聯絡人金鑰更新的接聽程式。

參數
@NonNull OnAccountContactKeysUpdatedListener listener

要取消註冊的接聽程式。

updateAllE2eeAccountKeys

@RequiresPermission(allOf = ["android.permission.READ_CONTACTS", "android.permission.WRITE_CONTACTS"])
abstract @NonNull Task<@NonNull VoidupdateAllE2eeAccountKeys(
    @NonNull List<@NonNull E2eeAccountKeyInfo> accountKeyInfos
)

插入一批帳戶聯絡人金鑰。

行為與 updateOrInsertE2eeContactKey 類似,但可一次插入/更新多個鍵。每個鍵都會插入自己的交易,因此即使工作擲回例外狀況,部分鍵仍可能會插入。

用戶端可以選擇重新傳送整個批次,處理暫時性失敗,因為這個 API 不會影響已插入金鑰的狀態。

如果為每個鍵提供 lookupKey,但未提供聯絡人基本資訊 (displayName、phoneNumber、emailAddress),這個 API 也會嘗試從聯絡人供應商擷取聯絡人的姓名、電話號碼和電子郵件地址。擷取金鑰時,聯絡人管理應用程式應使用這項資訊,確保金鑰只用於預期聯絡人。

Android 金鑰驗證應用程式會將這項資訊儲存在裝置上,且只會向擁有 READ_CONTACTS 權限的 API 呼叫端公開。

如果未提供金鑰的 lookupKey,這個 API 會儲存未繫結至任何聯絡人的金鑰。

參數
@NonNull List<@NonNull E2eeAccountKeyInfo> accountKeyInfos

E2eeAccountKeyInfo 物件清單,內含端對端加密聯絡人金鑰資訊。

updateOrInsertE2eeContactKey

@RequiresPermission(allOf = ["android.permission.READ_CONTACTS", "android.permission.WRITE_CONTACTS"])
abstract @NonNull Task<@NonNull VoidupdateOrInsertE2eeContactKey(
    @NonNull String lookupKey,
    @NonNull String deviceId,
    @NonNull String accountId,
    @NonNull byte[] keyValue
)

在端對端加密聯絡人金鑰資料表中插入新項目,或更新現有項目。插入/更新的端對端加密聯絡人金鑰屬於呼叫端應用程式。

這個 API 也會連同金鑰,一併儲存聯絡人提供者的聯絡人姓名、電話號碼和電子郵件地址。擷取金鑰時,聯絡人管理應用程式應使用這項資訊,確保金鑰只用於預期聯絡人。

Android 金鑰驗證應用程式會將這項資訊儲存在裝置上,且只會向擁有 READ_CONTACTS 權限的 API 呼叫端公開。

參數
@NonNull String lookupKey

參照聯絡人的值

@NonNull String deviceId

應用程式指定的裝置 ID

@NonNull String accountId

帳戶的應用程式指定 ID

@NonNull byte[] keyValue

金鑰的原始位元組 (大小上限為 getMaxKeySizeBytes 個位元組)

updateOrInsertE2eeContactKey

@RequiresPermission(allOf = ["android.permission.READ_CONTACTS", "android.permission.WRITE_CONTACTS"])
abstract @NonNull Task<@NonNull VoidupdateOrInsertE2eeContactKey(
    @NonNull List<@NonNull String> lookupKeys,
    @NonNull String deviceId,
    @NonNull String accountId,
    @NonNull byte[] keyValue
)

在端對端加密聯絡人金鑰資料表中插入新項目,或更新現有項目。插入/更新的端對端加密聯絡人金鑰屬於呼叫端應用程式。

對於提供的每個查閱鍵,這個 API 也會連同鍵,一併儲存聯絡人提供者的聯絡人姓名、電話號碼和電子郵件地址。擷取金鑰時,聯絡人管理應用程式應使用這項資訊,確保金鑰只用於預期聯絡人。

Android 金鑰驗證應用程式會將這項資訊儲存在裝置上,且只會向擁有 READ_CONTACTS 權限的 API 呼叫端公開。

如果查閱鍵清單為空白,這個 API 會儲存未與任何聯絡人建立關聯的金鑰。

使用一或多個查閱鍵呼叫這個 API 時,系統會更新鍵中繼資料,將其與提供的聯絡人建立關聯,但不會移除未在清單中提供的聯絡人現有任何關聯。如要移除聯絡人和金鑰之間的關聯,請使用適當的查閱鍵呼叫 removeE2eeContactKey

參數
@NonNull List<@NonNull String> lookupKeys

可能為空白的 CP2 查閱鍵清單,參照與該鍵相關聯的聯絡人

@NonNull String deviceId

應用程式指定的裝置 ID

@NonNull String accountId

帳戶的應用程式指定 ID

@NonNull byte[] keyValue

金鑰的原始位元組 (大小上限為 getMaxKeySizeBytes 個位元組)

updateOrInsertE2eeSelfKey

@RequiresPermission(value = "android.permission.WRITE_CONTACTS")
abstract @NonNull Task<@NonNull VoidupdateOrInsertE2eeSelfKey(
    @NonNull String deviceId,
    @NonNull String accountId,
    @NonNull byte[] keyValue
)

在端對端加密自訂金鑰資料表中插入新項目,或更新現有項目。

參數
@NonNull String deviceId

應用程式指定的裝置 ID

@NonNull String accountId

帳戶的應用程式指定 ID

@NonNull byte[] keyValue

金鑰的原始位元組 (大小上限為 getMaxKeySizeBytes 個位元組)