【问题标题】:Intent.ACTION_GET_CONTENT with Google DriveIntent.ACTION_GET_CONTENT 与 Google 云端硬盘
【发布时间】:2015-03-02 11:42:03
【问题描述】:

我有以下意图:

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 Drive 中选择文件。当他们使用 Google Drive 时,data.getData().getPath() 返回类似:“/document/acc=1;doc=195”的内容,而不是返回本地存储文件的路径。如何让 Google Drive 下载文件并返回路径?我想让用户从他们可用的任何文件存储选项中进行选择。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 谢谢!这更容易!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多