Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android - access Google Drive appdata folder from another device, but same app

My app is setup to allow backups to be saved to a Google Drive appdata folder. It all works perfectly well on the same device. When I make a backup, delete the app's data, then restore it all works.

However, when I try to backup on one device, then install on another and attempt to restore there are no files found. Same goes for when I uninstall the app on the original device, reinstall it on the same device and attempt to restore. Both cases result in no files being found despite the fact that I see there are files in the appdata folder when I log into Google Drive.

I read somewhere that you must use the RESOURCE_ID instead of the DRIVE_ID of a file for it to work between devices since a DRIVE_ID will be different from device to device. However the only way I've seen how to get the RESOURCE_ID is by using the driveId.getResourceId(), and I can't get the proper DRIVE_ID from another device.

tl;dr: how should I go about retrieving the proper file from the appdata folder that was created by another device/installation?

like image 975
Troy Stopera Avatar asked Jan 12 '15 09:01

Troy Stopera


People also ask

How do I access Appdata on Google Drive?

Via the site you open the settings menu and then choose "Manage Apps". Via the Drive app you can select Backups in the left menu, select a device, then App data and you'll get to see the list of apps and info.

How do you open Google Drive and make a new folder on mobile phone?

Create a folder On your Android phone or tablet, open the Google Drive app. Tap Folder. Name the folder. Tap Create.

What is the path for Google Drive in Android?

It's in hidden partition “/data"which you cannot access without root permissions. /data/data/com. google.


1 Answers

I have a database backup option in my app as well. I implemented it using the new Google Drive Android Api and what's more important, it works perfectly fine from one device to another.

Here's how I did it and what I recommend:

  1. Before reading or writing anything to Google Drive, call requestSync to make sure everything is synchronized and up to date (see how to use it here).
  2. Retrieve your files by name using a query instead of identifiers. As Google Drive allows multiple files with the same name, order your query by date and use the newest one.
  3. To avoid creating multiple backup files with the same name, use a query to find if the backup file already exists on Google Drive and if it does, open it and overwrite it.
  4. This is the point I guess you won't like: I recommend not using the Appfolder... for the moment. Google has acknowleged there might be some synchronization issues with it when uninstalling and reinstalling the app. I tried to use the Appfolder as well in my app without success and I finally ended up creating an ordinary folder in Google Drive. With that said, you can try the first three recommendations before adopting this one.

I hope these points can help with your implementation. If you need anything else, just tell.

like image 95
jmart Avatar answered Oct 05 '22 19:10

jmart