2
votes

I noticed that in new Google Drive API (v2) & Google Play Services (04.03.23) there is change listeners to receive notifications whenever a specified file or folder has changes to its contents or metadata. How to use it as listener for listening changes in whole appdata folder (folder used for application data only)? Thank you for any help in advance.

DriveFile file = Drive.DriveApi.getFile(mGoogleApiClient, mSelectedFileId);
file.addChangeListener(mGoogleApiClient, changeListener);

DriveFile file = Drive.DriveApi.getFile(mGoogleApiClient, mSelectedFileId);
file.removeChangeListener(mGoogleApiClient, changeListener);

final private Listener<ChangeEvent> changeListener = new Listener<ChangeEvent>() 
 {
 @Override
 public void onEvent(ChangeEvent event) 
     {
     mLogTextView.setText(String.format("File change event: %s", event));
     }
 };
2

2 Answers

2
votes

You need to call .await() or .setResultCallback() on the .addChangeListener and .removeChangeListener calls for them to be activated. This is not included on the Drive website; Ive written a post to them about it.

You can check the returned status of the call afterwards to make sure that it has been properly set (setting a listener on the app folder doesnt seem to be working, at least in my case).

1
votes

I found the solution:

DriveFolder folder = Drive.DriveApi.getFolder(mGoogleApiClient,Drive.DriveApi.getRootFolder(googleApiClient).getDriveId());
folder.addChangeListener(mGoogleApiClient, changeListener);