2016-03-31 12 views
1

Googleドライブにのクラウドベースのバックアップが適用されます。バックアップはスムーズに行われます。Android:復元用のドライブIDを取得

私はバックアップのために以下のコードを使用します。

void saveToDrive() { 
    // Code to upload file 
    DriveId mDriveId = metadataResult.getMetadata().getDriveId(); 
    SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(getApplicationContext().getPackageName(), MODE_PRIVATE); 
    sharedPreferences.edit().putString("DriveId", mDriveId.encodeToString()).apply(); 
    .... 
} 

あなたが見ることができるように、私はSharedPreferencesとき、私のバックアップにDriveIdを保存します。だから私のように復元することができ、DriveIdことを使用して:

void readFromDrive(DriveId mDriveId) { // DriveId is not available after app reinstall!! 
    // Code to download file and restore 
} 

して復元操作をマイバックアップファイルをダウンロードするためにDriveIdが必要です。私は、を再インストールしたときに復元を起動したい。しかし、私はではないDriveIdを取得することができますので、私は必要なファイルをダウンロードすることがあります。

どうすればよいですか?私はいくつかの助けを求めています。

ありがとうございました。

+1

これは役立つ可能性がありますhttp://stackoverflow.com/questions/24916490/app-folder-files-not-visible-after-un-install-re-install – abielita

答えて

1

私は、最初のコードを使用してGoogleドライブの内容を照会することによってそれを解決:

public class GDriveQuery extends BaseDemo { 
    @Override 
    public void onConnected(Bundle connectionHint) { 
     super.onConnected(connectionHint); 
     Query query = new Query.Builder() 
      .addFilter(Filters.eq(SearchableField.TITLE, "field")) 
      .addFilter(Filters.not(Filters.eq(SearchableField.TRASHED, true))) 
      .build(); 
     Drive.DriveApi.query(getGoogleApiClient(), query) 
      .setResultCallback(metadataCallback); 
    } 

    final private ResultCallback<DriveApi.MetadataBufferResult> metadataCallback = 
     new ResultCallback<DriveApi.MetadataBufferResult>() { 
      @Override 
      public void onResult(DriveApi.MetadataBufferResult result) { 
       if (!result.getStatus().isSuccess()) { 
        showMessage("Problem while retrieving results"); 
        return; 
       } 
       System.out.println("SUCCESS!!"); 
       MetadataBuffer mdb; 
       mdb = result.getMetadataBuffer(); 
       for (Metadata md : mdb) { 
        System.out.println(md.getDriveId().encodeToString()); 
       } 
      } 
     }; 
} 

を上記のコードは私にDriveIdを返しました。そしてそれを使用して、DriveId私は上記の質問に投稿されたようにreadFromDrive(driveId)関数を使用しました。

これは機能します。

ご協力いただきありがとうございます。

関連する問題