#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"))
В любом случае настоятельно рекомендую пример приложения. Документация недостаточно понятна!