与Google云端硬盘一起使用Intent.ACTION_GET_CONTENT

时间:2015-01-04 22:19:32

标签: android android-intent google-drive-api file-storage

我有以下意图:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("text/*");
startActivityForResult(intent, DBOpenHelper.REQUEST_CODE_RESTORE);

意图允许用户从许多选项中选择文本文件。例如,它适用于本地存储和Dropbox,在这两种情况下,我都可以按如下方式获取文件:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if ((requestCode == DBOpenHelper.REQUEST_CODE_RESTORE)
            && (resultCode == Activity.RESULT_OK)) {
        restoreFile = new File(data.getData().getPath());
        restoreFileName = restoreFile.getName();
    }
}

本地存储工作正常,Dropbox会将文件的本地副本复制到SD卡并返回正确的路径。问题是,如果用户从Google云端硬盘中选择文件。当他们使用Google Drive时,data.getData()。getPath()会返回类似:“/ document / acc = 1; doc = 195”的内容,而不是返回本地存储文件的路径。如何让Google云端硬盘下载文件并返回路径?我想允许用户从他们可用的任何文件存储选项中进行选择。

1 个答案:

答案 0 :(得分:7)

当用户选择文件时,Google云端硬盘可能在本地下载了文件,也可能没有。但是,在所有情况下,您都可以通过getContentResolver().openInputStream(data.getData())访问文件的内容 - 请注意openInputStream()也支持本地文件,并且也可以在其他情况下使用。