Google Drive App 文件夹备份数据在应用程序卸载时丢失

Google Drive App Folder backup data getting lost on app uninstall

我已经使用 Google Drive Android API 实现了数据库备份和恢复到 Google Drive App 文件夹。我对其进行了测试,它工作正常,这意味着我可以在 Google Drive 的隐藏应用程序文件夹中创建我的 db 文件,并且在卸载和重新安装该应用程序时,我可以使用我的应用程序的恢复功能来恢复database.

但是最近,它停止工作了。现在,当我备份并卸载我的应用程序并尝试从 Google Drive 的应用程序文件夹中恢复它时,它找不到我的备份文件。 Google 或 Android 最近有什么变化吗?

我已经在 Android 6.0.1、Nexus 5 上完成了所有测试。我知道从 6.0 开始, Google 引入了自动备份。但它是否也会删除以前存储在 App 文件夹中的任何内容?它在 6.0.1 上工作,直到 2-3 天前。我的 Nexus 5 的 google-play-services 版本是 10.2.98。请帮忙。

我通过在 onConnected() 方法中使用 Drive.DriveApi.requestSync() 方法解决了这个问题,如下所示:

@Override
    public void onConnected(Bundle connectionHint) {
Drive.DriveApi.requestSync(mGoogleApiClient).setResultCallback(syncCallBack);

    }
Drive.DriveApi.requestSync(mGoogleApiClient).setResultCallback(syncCallBack);
private ResultCallback<Status> syncCallBack = new ResultCallback<Status>() {
        @Override
        public void onResult(@NonNull Status status) {
            if (!status.isSuccess()) {
                if (DriveStatusCodes.DRIVE_RATE_LIMIT_EXCEEDED == status.getStatusCode()) {
                    //intimate user to wait for some time if you want to
                }
            }
                //now query db file from google drive's app folder
}
};


这个link给了我指点:
Android Google Drive App data folder not listing all childrens

对于仍然遇到此问题并使用最新驱动器 API for Android 的用户,上面标记的解决方案已弃用。经过大量搜索后,这对我有用:

DriveClient driveClient = Drive.getDriveClient(MainActivity.this, googleSignInAccount);

driveClient.requestSync().addOnSuccessListener(new OnSuccessListener<Void>() {
    @Override
    public void onSuccess(Void aVoid) {
        // Do stuff here
    }
});

上述方法将解决您重新安装应用程序后无法从应用程序文件夹中找到文件的问题。

对于较新的 Google Drive API,我们应该检索 DriveClient 然后执行 requestSync()

DriveClient mDriveClient = Drive.getDriveClient(getApplicationContext(), 
mGoogleSignInAccount);

mDriveClient.requestSync().addOnSuccessListener(aVoid -> {

    // your codes to query the file goes here
}

Android 快乐...