2015-01-12 12 views
5

La mia app è configurata per consentire il salvataggio dei backup in una cartella di dati app di Google Drive. Funziona perfettamente allo stesso dispositivo. Quando eseguo un backup, cancelli i dati dell'app, quindi ripristini tutto funziona.Android: accedi alla cartella appdata di Google Drive da un altro dispositivo, ma dalla stessa app

Tuttavia, quando si tenta di eseguire il backup su un dispositivo, quindi installare su un altro e tentare di ripristinare non ci sono file trovati. Lo stesso vale per quando disinstalla l'app sul dispositivo originale, reinstallarla sullo stesso dispositivo e tentare di ripristinarla. In entrambi i casi non vengono trovati file, nonostante il fatto che vedo che ci sono file nella cartella appdata quando accedo a Google Drive.

Ho letto da qualche parte che è necessario utilizzare RESOURCE_ID anziché DRIVE_ID di un file affinché funzioni tra i dispositivi poiché DRIVE_ID sarà diverso da dispositivo a dispositivo. Tuttavia, l'unico modo in cui ho visto come ottenere RESOURCE_ID consiste nell'utilizzare driveId.getResourceId() e non riesco a ottenere il DRIVE_ID corretto da un altro dispositivo.

tl; dr: come devo fare per recuperare il file corretto dalla cartella appdata che è stata creata da un altro dispositivo/installazione?

risposta

11

Ho anche un'opzione di backup del database nella mia app. L'ho implementato utilizzando il nuovo Google Drive Android Api e, cosa più importante, funziona perfettamente da un dispositivo all'altro.

Ecco come ho fatto e quello che io consiglierei:

  1. Prima di leggere o scrivere qualsiasi cosa per Google Drive, chiamo requestSync per assicurarsi che tutto è sincronizzato e aggiornati (vedere come usarlo here).
  2. Recupera i file per nome utilizzando una query anziché identificatori. Poiché Google Drive consente più file con lo stesso nome, ordina la query in base alla data e utilizza la più recente.
  3. Per evitare di creare più file di backup con lo stesso nome, utilizzare una query per scoprire se il file di backup esiste già su Google Drive e, in caso affermativo, aprirlo e sovrascriverlo.
  4. Questo è il punto che non ti piacerà: ti consiglio di non usare l'Appfolder ... per il momento. Google ha ammesso che potrebbero esserci dei problemi di sincronizzazione con esso durante la disinstallazione e la reinstallazione dell'app. Ho provato a utilizzare l'Appfolder anche nella mia app senza successo e alla fine ho finalmente creato una cartella ordinaria in Google Drive. Detto questo, puoi provare i primi tre consigli prima di adottare questo.

Spero che questi punti possano essere d'aiuto per la vostra implementazione. Se hai bisogno di qualcos'altro, dillo.

+0

Sfortunatamente probabilmente hai ragione. Per ora userò solo una cartella normale e spero che gli utenti non pensino che sia spazzatura e cancellarla. Non dovrebbero però visto che avrà il nome della mia app su di esso haha. Grazie! –

+0

Divertente, se lo eliminano, la tua app GDAA ha tutto il tempo per riportarla indietro dalla morte, poiché sarà visibile per giorni. Non mostra nemmeno il flag isTrashed(). Puoi persino scrivere su di esso/creare file in esso. E non preoccuparti, anche se l'utente svuota il cestino, lo vedrai ancora (finché non verrà risolto, ma da quando si avvicina il suo anniversario di un anno, potrebbe diventare una caratteristica permanente :). Vedi http://stackoverflow.com/questions/22515028. – seanpj

+0

Lasciatemi correggere, la tua app per Android in realtà non può riportarla indietro dalla morte poiché non ha idea che sia sparita. Quindi lo userà felicemente fino a pochi giorni dopo ... OOPS, ora è andato con tutti i N giorni di dati. – seanpj

Problemi correlati