1

我想使用Google Drive API在Google雲端硬盤中列出目錄中的所有文件和文件夾。但我只獲取文件的Metadata對象,而不是目錄中存在的文件夾。我使用下面的代碼使用Google Drive API列出GDrive的文件和文件夾

DriveFolder folder = Drive.DriveApi.getRootFolder(getClient()); 
folder.listChildren(getClient()) 
.setResultCallback(new ResultCallback <DriveApi.MetadataBufferResult>() {@ 
    Override 
    public void onResult(DriveApi.MetadataBufferResult result) { 
     if (!result.getStatus().isSuccess()) { 
      L.c("Error in listing root folder"); 
      return; 
     } 
     MetadataBuffer metadataBuffer = result.getMetadataBuffer(); 
     Metadata filedata; 
     ListItem[] items = new ListItem[metadataBuffer.getCount()]; 
     L.c("Count :" + metadataBuffer.getCount()); 
     for (int i = 0; i < metadataBuffer.getCount(); i++) { 
      items[i] = new ListItem(metadataBuffer.get(i)); 
     } 
     listAdapter = new ArrayAdapter <ListItem> (ExplorerClass.this, android.R.layout.simple_list_item_1, items); 
     mainList.setAdapter(listAdapter); 
    } 
}); 
+0

如何創建文件夾? – pinoyyid

+0

@pinoyyid請檢查我的編輯 –

+0

如何創建文件夾? – pinoyyid

回答

4

如果不是由您創建的應用程序或之前您的應用程序打開該目錄中的文件夾或文件存在(在你的情況下根),您將無法看到他們與您的應用程序。這是因爲您可能正在使用Drive.FILE範圍:https://developers.google.com/drive/web/scopes

不幸的是,谷歌驅動器android API目前僅支持drive.file和drive.appfolder作用域。如果您需要drive.readonly.metadata範圍,則可以使用Google Drive REST API。

+4

要添加到此(可能是正確的)答案... 假設我安裝了您的應用程序。我真的想允許它讀取和刪除我的所有Drive文件嗎?可能不會。因此,Drive實現了一系列範圍,最常見的是drive.file,它只允許應用程序查看該應用程序最初創建的文件。在應用程序外部創建的文件,包括在drive.google.com中創建的文件夾都是隱藏的。 – pinoyyid

+1

您也可以使用文件選取器,它允許您列出文件和文件夾,包括應用程序尚無權訪問的文件和文件夾。 https://github.com/googledrive/android-demos/blob/master/src/com/google/android/gms/drive/sample/demo/PickFolderWithOpenerActivity.java –

+0

糾正了Arthur的回答。 GDAA的文件選擇器([intents here](https://github.com/googledrive/android-demos#intents))不允許你(應用程序),但允許您的應用程序的當前授權用戶列出/查看所有在他/她的管轄範圍內的檔案 – seanpj

相關問題