gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:16 25 4
gpt4 key购买 nike

我使用新的 Google Drive API 但无法从我的 Google Drive 获取所有文件夹,我只能获取使用 Google Drive 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 Drive 中的所有文件夹,我尝试了 requestSync() 但结果是一样的......我需要帮助!

另一个问题:如何设置 AppFolder?我只看到 getAppFolder 但如何设置??

谢谢

最佳答案

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

有两种解决方法:

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

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

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

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

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

祝你好运

关于java - 在Android上获取所有文件夹google drive api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32760028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com