Android Google Drive SDK - 如何显示所选文件夹中的文件列表

时间:2014-04-04 09:54:35

标签: android google-api google-drive-api google-drive-android-api

我正在努力让我的代码工作。

我希望我的应用程序(单击按钮时)显示驱动器根文件夹中的所有文件夹(和文件)。 但似乎这是不可能的,因为即使我使用Ouath2授权应用程序,该应用程序只能访问用户选择的文件和文件夹。

行为很奇怪,当文件夹选择器打开时,如果内容是ARE文件夹,它只列出该文件夹的内容。它根本不会列出任何文件。

请专家看看我的代码并告诉我哪里出错了?

我正在使用PickFolderWithOpener活动,以获取driveId。它根据选择器中的用户选择返回一个driveID。

 DriveId driveId = (DriveId) data.getParcelableExtra(
                            OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID);

这是在这里返回的文件夹Drive ID吗?然后我需要调用intent ListFilesInFolderActivity。我假设我必须在意图调用中传递此driveID?如果我将DriveID格式化为字符串并将其传递,则会失败 用"找不到DriveId。您是否有权查看此文件?"消息。

所以我正在做的是传递ResourceID。

Intent intent = new Intent(this, ListFilesInFolderActivity.class);
                    intent.putExtra("DriveID", driveId.getResourceId());
                    startActivity(intent);

ListFilesInFolderActivity? DriveID或resourceID需要使用哪些内容?这是我在ListFilesInFolderActivity?

中的内容
Bundle extras = getIntent().getExtras();
        folderId= extras.getString("DriveID"); // this is the resourceID
Drive.DriveApi.fetchDriveId(getGoogleApiClient(), folderId)
                .setResultCallback(idCallback);


final private ResultCallback<DriveIdResult> idCallback = new ResultCallback<DriveIdResult>() {
@Override
public void onResult(DriveIdResult result) {
    if (!result.getStatus().isSuccess()) {
        showMessage("Cannot find DriveId. Are you authorized to view this file?");
        return;
    }
    DriveFolder folder = Drive.DriveApi.getFolder(getGoogleApiClient(), result.getDriveId());
    showMessage("Result driveId is:  " + result.getDriveId());
    folder.listChildren(getGoogleApiClient())
            .setResultCallback(metadataResult);



 }
};

这似乎有效,但它只列出所选文件夹中的文件夹。它不会列出文件。 为什么folder.listChildren(getGoogleApiClient())也没有列出文件!?

希望这是我遗漏的显而易见的事情。

1 个答案:

答案 0 :(得分:9)

您无法使用新SDK执行此操作,因为它只允许SCOPE_FILE访问。

这是为什么? “注意:Google云端硬盘Android API目前仅支持drive.file和drive.appdata授权范围。如果您的应用需要Drive Android API中尚未提供的其他权限或功能,则必须使用Google API Java客户端。” p>