Listing files and folders of GDrive using Google D

2019-01-26 02:10发布

问题:

I want to list all files and folders of a directory on Google Drive using Google Drive API. But I am only getting Metadata object of files not of the folders present in the directory. I am using the following code

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);
     }
 });

回答1:

If the folders or files present in the directory (in your case root) were not created by your app or opened by your app before, you won't be able to see them with your app. This is because you are probably using Drive.FILE scope: https://developers.google.com/drive/web/scopes

Unfortunately, the google drive android API currently supports only drive.file and drive.appfolder scopes. You can use the Google Drive REST API if you need drive.readonly.metadata scope.