android – 使用Google云端硬盘的Intent.ACTION_GET_CONTENT

我有以下意图:
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云端硬盘下载文件并返回路径?我想允许用户从他们可用的任何文件存储选项中进行选择.

解决方法

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

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...