2015-05-14 252 views
1

我想使用Google Driveasserver来存储应用程序数据。所以,我已将所有数据写入文件,然后将该文件上传到Drive。如何在Google云端硬盘上保存应用数据?

代码:

try { 
//   outputStream.write(bitmapStream.toByteArray()); 
      outputStream.write(text.getBytes()); 
     } 
    catch (IOException e1) { 
      Log.i(TAG, "Unable to write file contents."); 
    } 


    MetadataChangeSet metadataChangeSet = new MetadataChangeSet.Builder() 
       .setMimeType("text/txt").setTitle("testfile.txt").build(); 

    IntentSender intentSender = Drive.DriveApi 
         .newCreateFileActivityBuilder() 
         .setInitialMetadata(metadataChangeSet) 
         .setInitialDriveContents(result.getDriveContents()) 
         .build(mGoogleApiClient); 
    try { 
     startIntentSenderForResult(intentSender, REQUEST_CODE_CREATOR, null, 0, 0, 0); 
    } 
    catch (SendIntentException e) { 
        Log.i(TAG, "Failed to launch file chooser."); 
    } 

是否有可能,只要将设备连接到互联网,应用程序数据均不会与谷歌云端硬盘中的数据同步? 我读了约谷歌驱动器API,但无法理解:

1)如何同步发生? 2)我们是否可以与Google Drive中的应用文件夹中存储的文件同步? 3)我是否需要将文件写入Google云端硬盘,否则我将不得不将文件保存到某个容器中,Google在连接到互联网时会自行更新(如在iOS中)?

请指导我。

编辑

之前创建的驱动文件,我已经做了检查。

Query query = new Query.Builder() 
     .addFilter(Filters.eq(SearchableField.MIME_TYPE, "text/plain")) 
     .addFilter(Filters.eq(SearchableField.TITLE, "appdata.txt")).build(); 

Drive.DriveApi.query(getGoogleApiClient(), query).setResultCallback(
       metadataCallback); 


final private ResultCallback<MetadataBufferResult> metadataCallback = new ResultCallback<MetadataBufferResult>() { 

@Override 
public void onResult(MetadataBufferResult result) { 
metadata = result.getMetadataBuffer(); 
for (int i = 0; i < metadata.getCount(); i++) { 

    DriveFile file = Drive.DriveApi.getFile(getGoogleApiClient(), 
          metadata.get(i).getDriveId()); 
    file.trash(getGoogleApiClient()); 
} 

这是一个错误的方式进行?

+0

中的说明问问自己什么时候应用程序与驱动器同步至关重要?它在主页上的暂停,OnCreate上?这是当你连接驱动器。 – SmulianJulian

+0

我无法同步存储在** App文件夹**中的文件。 – megha

+0

@SmulianJulian我可以将文件保存到云端硬盘,但每次创建具有相同元数据的新文件。如何将旧文件与新文件同步? – megha

回答

3

newCreateFileActivityBuilder()将开始一个活动,让用户在他们的Drive中选择一个位置来创建文件。 如果你想使用应用程序文件夹,你需要按照https://developers.google.com/drive/android/appfolder

+0

我遵循了上述网站上的说明。我能够保存我的文件,但每次创建新文件而不是替换旧文件。是否有可能取代/编辑应用程序/根文件夹中的旧文件? – megha

+1

是的。请参阅https://developers.google.com/drive/android/files#writing_files – Ofir

相关问题