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

时间:2017-03-01 12:37:03

标签: android google-drive-android-api

我已使用Google Drive Android API实施数据库备份并恢复到Google云端硬盘应用文件夹。我测试了它,它工作正常,这意味着我可以在Google云端硬盘的隐藏应用文件夹中创建我的数据库文件,卸载并重新安装应用程序,我可以使用我的应用程序的还原功能来恢复数据库。 />
但最近,它已停止工作。现在,当我重新启动并卸载我的应用并尝试从Google云端硬盘的应用文件夹中恢复时,它无法找到我的备份文件。谷歌或Android最近有什么变化吗?

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

3 个答案:

答案 0 :(得分:3)

我在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
}
};


这个链接给了我指针:
Android Google Drive App data folder not listing all childrens

答案 1 :(得分:1)

对于仍然遇到此问题并使用最新Android版Drive API的用户,不推荐使用上面标记的解决方案。经过多次搜索,这对我有用:

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

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

答案 2 :(得分:0)

以上提到的方法将解决重新安装App后无法从App文件夹中找到文件的问题。

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

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

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

    // your codes to query the file goes here
}

Android开发愉快...