在 Google 雲端硬碟上建立檔案
我們將在 Google 雲端硬碟上新增一個檔案。我們將使用 Drive
物件的 createFile()
方法在 Google 雲端硬碟上以程式設計方式建立檔案。在這個例子中,我們在使用者的根資料夾中新增一個新的文字檔案。新增檔案時,我們需要指定初始後設資料集,檔案內容和父資料夾。
我們需要建立一個 CreateMyFile()
回撥方法,在這個方法中,使用 Drive
物件來檢索 DriveContents
資源。然後我們將 API 客戶端傳遞給 Drive
物件並呼叫 driveContentsCallback
回撥方法來處理 DriveContents
的結果。
DriveContents
資源包含檔案二進位制流的臨時副本,該副本僅對應用程式可用。
public void CreateMyFile(){
fileOperation = true;
// Create new contents resource.
Drive.DriveApi.newDriveContents(mGoogleApiClient)
.setResultCallback(driveContentsCallback);
}
DriveContents 的結果處理程式
處理響應需要檢查呼叫是否成功。如果呼叫成功,我們可以檢索 DriveContents
資源。
我們將建立 DriveContents
的結果處理程式。在這個方法中,我們呼叫 CreateFileOnGoogleDrive()
方法並傳遞 DriveContentsResult
的結果:
/**
* This is the Result result handler of Drive contents.
* This callback method calls the CreateFileOnGoogleDrive() method.
*/
final ResultCallback<DriveContentsResult> driveContentsCallback =
new ResultCallback<DriveContentsResult>() {
@Override
public void onResult(DriveContentsResult result) {
if (result.getStatus().isSuccess()) {
if (fileOperation == true){
CreateFileOnGoogleDrive(result);
}
}
}
};
以程式設計方式建立檔案
要建立檔案,我們需要使用 MetadataChangeSet
物件。通過使用此物件,我們設定標題(檔名)和檔案型別。此外,我們必須使用 DriveFolder
類的 createFile()
方法並傳遞 Google 客戶端 API,MetaDataChangeSet
物件和 driveContents
來建立檔案。我們呼叫結果處理程式回撥來處理建立檔案的結果。
我們使用以下程式碼在使用者的根資料夾中建立一個新的文字檔案:
/**
* Create a file in the root folder using a MetadataChangeSet object.
* @param result
*/
public void CreateFileOnGoogleDrive(DriveContentsResult result){
final DriveContents driveContents = result.getDriveContents();
// Perform I/O off the UI thread.
new Thread() {
@Override
public void run() {
// Write content to DriveContents.
OutputStream outputStream = driveContents.getOutputStream();
Writer writer = new OutputStreamWriter(outputStream);
try {
writer.write("Hello Christlin!");
writer.close();
} catch (IOException e) {
Log.e(TAG, e.getMessage());
}
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle("My First Drive File")
.setMimeType("text/plain")
.setStarred(true).build();
// Create a file in the root folder.
Drive.DriveApi.getRootFolder(mGoogleApiClient)
.createFile(mGoogleApiClient, changeSet, driveContents)
setResultCallback(fileCallback);
}
}.start();
}
處理建立檔案的結果
以下程式碼將建立一個回撥方法來處理建立檔案的結果:
/**
* Handle result of Created file
*/
final private ResultCallback<DriveFolder.DriveFileResult> fileCallback = new
ResultCallback<DriveFolder.DriveFileResult>() {
@Override
public void onResult(DriveFolder.DriveFileResult result) {
if (result.getStatus().isSuccess()) {
Toast.makeText(getApplicationContext(), "file created: "+
result.getDriveFile().getDriveId(), Toast.LENGTH_LONG).show();
}
return;
}
};