谷歌驱动器Sqlite数据库上传无法正常工作

时间:2016-09-10 09:16:01

标签: android sqlite google-drive-android-api

我想备份和恢复我的sqlite数据库。为此,我使用谷歌驱动器API。我使用了这个this演示代码。一切都很完美。我可以上传和下载我的数据库,直到我卸载我的应用程序。

但后来我注意到一种奇怪的行为。方案如下

  • 输入一些数据到sqlite
  • 将我的sqlite数据库上传到驱动器
  • 卸载我的应用程序

  • 重新安装并尝试从驱动器下载文件。

    此时我无法从驱动器中找到任何文件....搜索总是返回0 ...我不知道为什么。如果我不卸载应用程序并且只是清除数据,那么所有工作都是完美的。

以下是我上传的代码....

public boolean createFile() {
        DriveId dId = null;
        String mimeType = MimeTypeMap.getSingleton().getExtensionFromMimeType("db");

        if (mGoogleApiClient != null && mGoogleApiClient.isConnected())
            try {
                DriveFolder pFldr = Drive.DriveApi.getAppFolder(mGoogleApiClient);
                if (pFldr != null) {
                    File file = context.getDatabasePath(db.getDatabaseName());
                    DriveContents cont = file2Cont(null, file);
                    MetadataChangeSet meta = new MetadataChangeSet.Builder().setTitle(Google_Drive_File).
                            setMimeType(mimeType).build();
                    DriveFolder.DriveFileResult r1 = pFldr.createFile(mGoogleApiClient, meta, cont).await();
                    DriveFile dFil = r1 != null && r1.getStatus().isSuccess() ? r1.getDriveFile() : null;
                    if (dFil != null) {
                        DriveResource.MetadataResult r2 = dFil.getMetadata(mGoogleApiClient).await();
                        if (r2 != null && r2.getStatus().isSuccess()) {
                            dId = r2.getMetadata().getDriveId();
                        }
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        return dId == null ? false : true;
    }

请帮助我....

1 个答案:

答案 0 :(得分:0)

好吧,我已经解决了....我没有得到文件,因为我在auth证书中使用调试密钥。一旦我通过发布更改我的调试密钥,所有工作都会完美。