我有以下意图:
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()也支持本地文件,并且也可以在其他情况下使用.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。