Android:在Google云端硬盘文件选择器

时间:2016-04-24 09:01:17

标签: android google-drive-api

在我的应用中,我需要阅读设置文件,该设置文件可以位于本地存储空间或用户的Google云端硬盘存储空间中(安装了Google云端硬盘应用)。

以下打开文件选择器,首先询问用户使用哪个文件选择器,包括使用Google Drive文件选择器的选项:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("file/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
Intent chooserIntent = Intent.createChooser(intent, "Open file");
startActivityForResult(chooserIntent, REQUEST_CODE_FILE_PICKER);

在我的onActivityResult()函数中,如果用户选择使用文件选择器来选择本地文件,那么我已经知道如何成功获取文件路径并读取文件。但是,如果用户使用Google云端硬盘文件选择器来选择远程文件,我该如何访问用户选择的文件?

这些是onActivityResult()函数的基本内容:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == REQUEST_CODE_FILE_PICKER && resultCode == RESULT_OK) {

        if (LOCAL FILE) {

            Uri uri = data.getData();
            File myFile = new File(uri.getPath());
            String filePath = myFile.getAbsolutePath();
            // now read file store at 'filePath' from local storage (this part is fine)

        } else if (GOOGLE DRIVE FILE) {
            // what do I do here to retrieve the selected file?
        }

    }

    super.onActivityResult(requestCode, resultCode, data);
}

使用Google云端硬盘文件选择器选择Google云端硬盘文件时,所选文件似乎已下载(但到了哪里?)但后来没有任何反应......如何访问下载的文件以在我的应用中使用?

在上面的onActivityResult()中,如何判断所选文件是否实际上是Google云端硬盘文件,以便我可以相应地对待它?即if (GOOGLE DRIVE FILE)的测试是什么?

1 个答案:

答案 0 :(得分:0)

我认为当选择云端硬盘作为文件选择器时,您正在使用OpenFileActivityBuilder。它将返回EXTRA_RESPONSE_DRIVE_ID,这是所选文件的驱动器ID。在此之后,您只需要调用DriveFile.open来打开所述文件。这可以作为检查您是否选择了驱动器文件选择器的标志。

我无法回答文件的下载位置,但我最好的猜测是它位于应用程序的data/内(您很可能无法访问)