在Android上获取所有文件夹Google Drive API

我使用新的Google驱动器api,但无法从Google驱动器中获取所有文件夹,只能获取使用Google驱动器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<DriveApi.MetadataBufferResult> pruebaChildren = new

ResultCallback<DriveApi.MetadataBufferResult>() {

@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驱动器中的所有文件夹,我尝试了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(...);

…并且不要忘记添加 范围

祝好运

以上是 在Android上获取所有文件夹Google Drive API 的全部内容, 来源链接: utcz.com/qa/398809.html

回到顶部