問題描述
我使用新的 Google drive api,但無法從我的 google drive 中獲取所有文件夾,我只能獲取使用 google drive api 創建的文件夾...有人知道為什么會這樣嗎?
I use the new Google drive api and I can't get All folders from my google drive, I only get the folders that I create with the google drive api... Anybody know why happens this?
這是我的代碼:
@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() 但結果是一樣的......我需要幫助!
And now I want see all folders in rootFolder Drive, I try the requestSync() but the result is same... I need help please!
還有一個問題:如何設置 AppFolder?我只看到 getAppFolder 但如何設置??
And another question: How I can set the AppFolder? I only see getAppFolder but How I can set ??
謝謝
推薦答案
根據設計,GDAA 僅支持FILE 范圍,即它將僅查找/列出 Android 應用創建的文件夾/文件.
By design, GDAA supports only the FILE scope, i.e. it will find / list only folders / files created by the Android app.
有兩種解決方法:
- 使用 GDAA 的 intents 之一,基本上讓用戶選擇文件/文件夾.這樣,您的應用就可以使用它.
- 使用不同的 API,即 REST Api,它支持 DRIVE 范圍,為您的應用提供完整的一組文件/文件夾.
- Use one of the intents of the GDAA, basically letting the user pick the file / folder. That way it will become available to your app.
- Use a different API, the REST Api, which supports the DRIVE scope, giving your app full set of files / folders.
如果您想研究這兩個 API 的行為方式,我在 Github 上放了兩個不同的演示(REST和 GDAA CRUD 演示包裝器).
In case you want to study how the two APIs behave, I've put two different demos on the Github (the REST and the GDAA CRUD demo wrappers).
您問題的第二部分沒有答案.您不設置應用程序文件夾,您只能獲取它的 DriveFolder id.您可以使用它來創建/檢索對象.
The second part of your question does not have answer. You don't set the app folder, you can only get it's DriveFolder id. You use it to create / retrieve objects.
DriveFolder appFldr = Drive.DriveApi.getAppFolder(mGooleApiClient);
appFldr.createFile(...);
appFldr.createFolder(...);
appFldr.listChildren(...);
appFldr.queryChildren(...);
...并且不要忘記添加 SCOPE_APPFOLDER 范圍
... and don't forget to add the SCOPE_APPFOLDER scope
祝你好運
這篇關于在 Android 上獲取所有文件夾 google drive api的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!