在Android上获取所有文件夹google drive api

我使用新的谷歌驱动器API,我无法从我的谷歌驱动器获取所有文件夹,我只获得我用谷歌驱动器API创建的文件夹…任何人都知道为什么会这样?

这是我的代码:

@Override protected void onResume() { super.onResume(); if (mGoogleApiClient == null) { // Create the API client and bind it to an instance variable. // We use this instance as the callback for connection and connection // failures. // Since no account name is passed, the user is prompted to choose. mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(Drive.API) .addScope(Drive.SCOPE_FILE) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build(); } // Connect the client. Once connected, the camera is launched. mGoogleApiClient.connect(); } /** * Handles resolution callbacks. */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_RESOLUTION && resultCode == RESULT_OK) { mGoogleApiClient.connect(); } } /** * Called when activity gets invisible. Connection to Drive service needs to * be disconnected as soon as an activity is invisible. */ @Override protected void onPause() { if (mGoogleApiClient != null) { mGoogleApiClient.disconnect(); } super.onPause(); } /** * Called when {@code mGoogleApiClient} is connected. */ @Override public void onConnected(Bundle connectionHint) { Log.i(TAG, "GoogleApiClient connected"); rootFolder = Drive.DriveApi.getRootFolder(mGoogleApiClient); rootFolder.listChildren(getGoogleApiClient()).setResultCallback(pruebaChildren); } ResultCallback pruebaChildren = new ResultCallback() { @Override public void onResult(DriveApi.MetadataBufferResult metadataBufferResult) { if (!metadataBufferResult.getStatus().isSuccess()) { showMessage("Problem while retrieving files"); return; } Log.i(TAG,"got root folder"); MetadataBuffer buffer = metadataBufferResult.getMetadataBuffer(); Log.i(TAG,"Buffer count " + buffer.getCount()); if(buffer.getCount() == 0){ createFolderApp(); } else{ for(Metadata m : buffer){ Log.i(TAG,"Metadata name " + m.getTitle() + "(" + (m.isFolder() ? "folder" : "file") + ")"); if (m.isFolder() && m.getTitle().equals(TAG)){ Log.i(TAG,"APP FOLDER FOUND"); Drive.DriveApi.getFolder(mGoogleApiClient, m.getDriveId()) .listChildren(mGoogleApiClient) .setResultCallback(foreachAppAplication); } } } return; } }; 

现在我想查看rootFolder Drive中的所有文件夹,我尝试requestSync()但结果是一样的……我需要帮助!

还有一个问题:如何设置AppFolder? 我只看到getAppFolder但我怎么能设置?

谢谢

根据设计, GDAA仅支持FILE范围,即它将仅查找/列出由Android应用程序创建的文件夹/文件。

它有两种方法:

  1. 使用GDAA的一个意图 ,基本上让用户选择文件/文件夹。 这样它将可用于您的应用程序。
  2. 使用不同的API, REST Api,它支持DRIVE范围,为您的应用程序提供全套文件/文件夹。

如果你想研究两个API的行为方式,我在Github( REST和GDAA CRUD演示包装器)上放了两个不同的演示。

你问题的第二部分没有答案。 您没有设置应用程序文件夹,只能获取它的DriveFolder ID。 您可以使用它来创建/检索对象。

  DriveFolder appFldr = Drive.DriveApi.getAppFolder(mGooleApiClient); appFldr.createFile(...); appFldr.createFolder(...); appFldr.listChildren(...); appFldr.queryChildren(...); 

…并且不要忘记添加SCOPE_APPFOLDER范围

祝你好运