android - 如何让 Android 将应用程序数据存储在用户的 Google 帐户中,以便在新设备上安装时恢复

标签 android android-activity google-cloud-firestore accountmanager android-backup-service

我们正在实现 loginless system在我们的网络、iOS 和 Android 应用程序上,允许用户拥有永久身份,而无需任何注册/登录流程。

loginless 的一个关键部分是依靠 iOS 和 Android 将我们应用程序的数据永久存储在用户的 iCloud/Google 帐户中,以便在每种情况下为用户自动恢复数据:

  • (i) 退出并重新打开应用程序(在 Android 中使用 SharedPreferences,在 iOS 中使用 UserDefaults 完成)
  • (ii) 在同一台设备上卸载并重新安装应用程序(通过 Android1 中的key/value backupKeychain + NSUbiquitousKeyValueStore 完成> 在 iOS 中)
  • (iii) 根据旧设备的备份设置新设备(通过 Android1 中的key/value backupUserDefaults + Keychain + NSUbiquitousKeyValueStore 在 iOS 中)
  • (iv) 在一台全新的设备上安装该应用程序,该设备已登录用户之前使用该应用程序所使用的同一 iCloud/Google 帐户(通过 iOS 中的 NSUbiquitousKeyValueStore 完成)

我们唯一剩下的就是弄清楚如何为 Android 完成 (iv)。是否key/value backup在 Android 中恢复数据在这种情况下,即使全新的设备不是从旧设备的备份设置的?

我们发现了 Cloud Firestore 的存在和 AccountManager在我们的研究期间,但似乎 Cloud Firestore 中的数据是基于设备的,因此它无法完成 (iv),而且 AccountManager 似乎需要征得用户的许可才能通过 android 请求他们的帐户.permission.GET_ACCOUNTS,加上无登录的整个设计旨在不要求用户提供任何个人身份信息。我们的这些结论是否正确,或者是否可以使用 Cloud Firestore 来完成 (iv)?在 Android 中还有什么我们可以用来完成 (iv) 的吗?

¹ 我们决定使用键/值备份而不是自动备份,因为备份的频率大于自动备份的频率。查看更多差异信息in Android's documentation .

最佳答案

如果 android:allowBackup 共享首选项应该从以前的设备恢复属性设置为 true。据我所知,如果您在 Google(云端硬盘)备份了您的手机,则此方法有效。

关于android - 如何让 Android 将应用程序数据存储在用户的 Google 帐户中,以便在新设备上安装时恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64302491/

相关文章:

Android Q Kotlin - API 29 : check if image exists

android - 如何扩展 View 并为同一类扩展 Activity

java - 一个 WebView 中的多个 URL

firebase - 编译的 Jar 不断抛出 : Uncaught exception in the SynchronizationContext

java - 如何使用 Firestore 对象填充数组

android - 如何使用 Okhttpclient 创建带参数的 Http Delete 或 Put 方法?安卓okhttp客户端

android - 如何使用 Android 代码发送电子邮件

java - Android 在右下角显示警报对话框,并在显示时使用 Activity

google-cloud-firestore - 使用exist()的Cloud firestore规则是否算作读取?

java - fragment 中的 ListView