2015-11-25 2 views
0

У меня проблема с этим методом. Я думаю, что commitAndCloseContents устарел, но я не могу найти метод для использования. Может ли кто-нибудь помочь?Привод Google: устаревший метод commitAndCloseContents()

driveFile.commitAndCloseContents (googleApiClient, result.getDriveContents()).setResultCallback(new ResultCallback<Status>() { 
      @Override 
      public void onResult(final Status status) { 
       if (status.isSuccess()) { 
        Log.d(TAG, "handleUploadOpenContentsResult() commitAndCloseContents() succefully created file " + file.getName()); 
        if (onLoadCompleteListener != null) 
         onLoadCompleteListener.onLoadComplete(file); 
       } else { 
        Log.w(TAG, "handleUploadOpenContentsResult() commitAndCloseContents() cannot create file " + file.getName()); 
        if (onLoadCompleteListener != null) 
         onLoadCompleteListener.onLoadFailed(file, "commitAndCloseContents() failed: " + status.getStatusCode()); 
       } 
       continueUploadFiles(); 
      } 
     }); 

ответ

1

Там нет 'commitAndCloseContents' в GDAA. Существует метод commit(), который используется в любое время, когда вам нужно получить доступ к содержимому файла. Пожалуйста, см. this для стандартного использования commit() и discard(). В этом контексте он служит призывом «закрыть» контент после его чтения/записи (вы также можете увидеть использование here в (0) и обновление (...) примитивов).

Другое использование для commit() - это сценарий, в котором вам необходимо получать события завершения, которые сообщают вам, когда ваши изменения (контент, метаданные) были продвинуты на Диске. См. this.

Для полноты здесь приведен фрагмент кода, показывающий типичное использование commit()/discard().

GoogleApiClient mGAC; 
... 
/************************************************************************** 
* update file in GOODrive 
* @param df drive file 
* @param titl new file name (optional) 
* @param mime new mime type (optional) 
* @param file new file content (optional) 
* @return success status 
*/ 
boolean update(DriveFile df, String titl, String mime, String desc, File file) { 
    Boolean bOK = false; 
    if (mGAC != null && mGAC.isConnected() && df != null) try { 
    Builder mdBd = new Builder(); 
    if (titl != null) mdBd.setTitle(titl); 
    if (mime != null) mdBd.setMimeType(mime); 
    if (desc != null) mdBd.setDescription(desc); 
    MetadataChangeSet meta = mdBd.build(); 

    MetadataResult r1 = df.updateMetadata(mGAC, meta).await(); 
    if ((r1 != null) && r1.getStatus().isSuccess() && file != null) { 
     DriveContentsResult r2 = df.open(mGAC, DriveFile.MODE_WRITE_ONLY, null).await(); 
     if (r2.getStatus().isSuccess()) { 
     DriveContents cont = file2Cont(r2.getDriveContents(), file); 
     Status r3 = cont.commit(mGAC, meta 
      //enable if you need COMPLETION EVENTS 
      // ,new ExecutionOptions.Builder() .setNotifyOnCompletion(true).build() 
     ).await(); 
     bOK = (r3 != null && r3.isSuccess()); 
     } 
    } 
    } catch (Exception e) { e.printStackTrace(); } 
    return bOK; 
} 

/*********************************************************************** 
* get file contents 
* @param df drive file 
* @return file's content/null on fail 
*/ 
InputStream read(DriveFile df) { 
    InputStream is = null; 
    if (mGAC != null && mGAC.isConnected() && df != null) try { 
    DriveContentsResult rslt = df.open(mGAC, DriveFile.MODE_READ_ONLY, null).await(); 
    if ((rslt != null) && rslt.getStatus().isSuccess()) { 
     DriveContents cont = rslt.getDriveContents(); 
     is = cont.getInputStream(); 
     cont.discard(mGAC); // or cont.commit(); they are equiv if READONLY 
    } 
    } catch (Exception e) { e.printStackTrace(); } 
    return is; 
} 

Good Luck

Смежные вопросы