2015-01-12 67 views
5

我的應用已設置爲允許將備份保存到Google雲端硬盤應用數據文件夾。它在同一臺設備上完美運行。當我進行備份時,刪除應用程序的數據,然後恢復所有的作品。Android - 從其他設備訪問Google雲端硬盤應用數據文件夾,但使用相同的應用

但是,當我嘗試在一臺設備上備份時,然後安裝在另一臺設備上並嘗試進行恢復時,沒有找到任何文件。當我在原始設備上卸載應用程序時,也是如此,請將其重新安裝到同一設備上並嘗試恢復。這兩種情況都會導致找不到任何文件,儘管我在登錄到Google Drive時看到了appdata文件夾中的文件。

我在某處讀取必須使用RESOURCE_ID而不是文件的DRIVE_ID才能在設備之間工作,因爲DRIVE_ID將因設備而異。然而,我已經看到如何獲得RESOURCE_ID的唯一方法是使用driveId.getResourceId(),並且我無法從其他設備獲取正確的DRIVE_ID。

tl; dr:我應該如何去從其他設備/安裝創建的appdata文件夾中檢索正確的文件?

回答

11

我在我的應用程序中也有一個數據庫備份選項。我使用新的Google Drive Android Api來實現它,更重要的是,它可以很好地從一臺設備轉移到另一臺設備。

以下是我做到了,我的建議:

  1. 之前讀取或寫入任何東西到谷歌驅動器,調用requestSync以確保一切都是同步的和最新的(看看如何使用它here)。
  2. 使用查詢而不是標識符通過名稱檢索文件。由於Google雲端硬盤允許具有相同名稱的多個文件,因此請按日期排列查詢並使用最新的查詢。
  3. 要避免創建具有相同名稱的多個備份文件,請使用查詢來查找備份文件是否已存在於Google雲端硬盤中,如果存在,請將其打開並覆蓋它。
  4. 這是我猜你不會喜歡的一點:我建議暫時不要使用Appfolder ...。谷歌已經承認,卸載和重新安裝應用程序時可能存在一些同步問題。我試圖在應用程序中使用Appfolder而沒有成功,最後我終於在Google Drive中創建了一個普通文件夾。有了這個說法,你可以在採用這個建議之前嘗試前三條建議。

我希望這些觀點能幫助您的實施。如果您需要其他東西,請告訴。

+0

不幸的是,你可能是對的。現在我只需要使用普通文件夾,並希望用戶不會認爲它是垃圾並將其刪除。他們不應該,因爲它會有我的應用程序的名字哈哈。謝謝! –

+0

有趣的是,如果他們刪除它,你的GDAA應用程序有足夠的時間從死亡中恢復,因爲它可以在幾天內看到。甚至沒有顯示isTrashed()標誌。你甚至可以寫入/創建文件。不用擔心,即使用戶清空垃圾,您仍然可以看到它(直到它得到修復;但是自從它成立一週年後,它可能會成爲永久性功能:)。請參閱http://stackoverflow.com/questions/22515028。 – seanpj

+0

讓我糾正它,你的Android應用程序實際上無法將它從死亡中帶回來,因爲它沒有線索消失。所以它會很高興地使用它,直到幾天後... OOPS,現在它已經與所有N天的數據一起消失。 – seanpj

相關問題