【问题标题】:Android - access Google Drive appdata folder from another device, but same appAndroid - 从另一台设备访问 Google Drive appdata 文件夹,但相同的应用程序
【发布时间】:2015-01-12 09:49:13
【问题描述】:

我的应用已设置为允许将备份保存到 Google Drive appdata 文件夹。这一切都在同一台设备上运行良好。当我进行备份时,删除应用程序的数据,然后恢复一切正常。

但是,当我尝试在一台设备上备份,然后在另一台设备上安装并尝试恢复时,没有找到文件。当我在原始设备上卸载应用程序,在同一设备上重新安装并尝试恢复时也是如此。尽管我在登录 Google Drive 时看到 appdata 文件夹中有文件,但这两种情况都导致找不到文件。

我在某处读到,您必须使用文件的 RESOURCE_ID 而不是 DRIVE_ID 才能在设备之间工作,因为 DRIVE_ID 因设备而异。但是,我看到如何获取 RESOURCE_ID 的唯一方法是使用 driveId.getResourceId(),我无法从其他设备获取正确的 DRIVE_ID。

tl;dr:我应该如何从另一个设备/安装创建的 appdata 文件夹中检索正确的文件?

【问题讨论】:

    标签: android google-drive-api google-drive-android-api


    【解决方案1】:

    我的应用程序中也有一个数据库备份选项。我使用新的 Google Drive Android Api 实现了它,更重要的是,它在一台设备到另一台设备上运行良好。

    这是我的做法和我的建议:

    1. 在向 Google 云端硬盘读取或写入任何内容之前,请调用 requestSync 以确保所有内容都已同步且是最新的(请参阅如何使用它here)。
    2. 使用查询而不是标识符按名称检索文件。由于 Google 云端硬盘允许使用相同名称的多个文件,因此请按日期对查询进行排序并使用最新的。
    3. 为避免创建多个同名备份文件,请使用查询来查找备份文件是否已存在于 Google 云端硬盘中,如果存在,请打开并覆盖它。
    4. 这是我猜你不会喜欢的一点:我建议暂时不要使用 Appfolder...。谷歌承认在卸载和重新安装应用程序时可能存在一些同步问题。我尝试在我的应用程序中使用 Appfolder 也没有成功,最后我最终在 Google Drive 中创建了一个普通文件夹。话虽如此,您可以先尝试前三个建议,然后再采用此建议。

    我希望这些要点对您的实施有所帮助。如果你还需要什么,尽管说。

    【讨论】:

    • 不幸的是,您可能是对的。现在我将只使用一个普通文件夹,希望用户不要认为它是垃圾并删除它。他们不应该,因为它上面会有我的应用程序的名称哈哈。谢谢!
    • 有趣的是,如果他们确实删除了它,您的 GDAA 应用程序有足够的时间将其从死亡中恢复过来,因为它会在几天内可见。甚至没有显示 isTrashed() 标志。您甚至可以在其中写入/创建文件。不用担心,即使用户清空了垃圾,你仍然会看到它(直到它被修复;但由于它的一周年即将到来,它可能会成为一个永久功能:)。见stackoverflow.com/questions/22515028
    • 让我纠正一下,您的 Android 应用程序实际上无法将其从死亡中恢复过来,因为它不知道它已经消失了。所以它会很高兴地使用它,直到几天后......糟糕,现在它已经消失了所有 N 天的数据。
    • 我们不能让文件夹不可见...所以用户看不到它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 2013-06-02
    相关资源
    最近更新 更多