API переноса учетной записи Android: где получить TransferData для AccountTransferClient.sendData (AccountType, TransferData)?

#android #data-transfer #user-accounts #accountmanager

#Android #передача данных #учетные записи пользователей #accountmanager

Вопрос:

Я пытаюсь реализовать API переноса учетной записи Android, который в основном позволяет переносить учетные записи для вашего приложения со старого телефона на новый телефон, чтобы пользователю не приходилось снова входить в систему при использовании вашего приложения на новом телефоне.

Однако я чувствую, что в документации отсутствует информация. API переноса учетной записи

Когда я звоню AccountTransferClient.sendData(accountType, transferData) , чтобы перенести учетные записи на новый телефон, он не сообщает мне, откуда я получаю transferData . Я попытался просмотреть документы AccountTransferClient для получения дополнительной информации, но это тоже мало что говорит.

Спасибо!

Ответ №1:

Найден образец приложения https://github.com/android/identity-samples/tree/main/AccountTransferApi и, по-видимому, то, что они делают, это помещают информацию об учетной записи в объект JSON, а затем превращают объект JSON в массив байтов (который является TransferData).

 val jsonArray = JSONArray()
for (account in accounts) {
    val accountJsonObject = JSONObject()
    try {
        accountJsonObject.put(KEY_ACCOUNT_NAME, account.name)
        val password = accountManager.getPassword(account)
        accountJsonObject.put(KEY_ACCOUNT_PASSWORD, password)
    } catch (e: JSONException) {
        Log.e(TAG, "Error while creating bytes for transfer", e)
        return null
    }
    jsonArray.put(accountJsonObject)
}
val jsonObject = JSONObject()
try {
    jsonObject.put(KEY_ACCOUNT_ARRAY, jsonArray)
} catch (e: JSONException) {
    Log.e(TAG, "Error", e)
    return null
}
val transferData = jsonObject.toString().toByteArray(Charset.forName("UTF-8"))
  

В любом случае настоятельно рекомендую пример приложения. Документация недостаточно понятна!