首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从Intent.ACTION_GET_CONTENT读取Uri是否需要READ_EXTERNAL_STORAGE权限

从Intent.ACTION_GET_CONTENT读取Uri是否需要READ_EXTERNAL_STORAGE权限
EN

Stack Overflow用户
提问于 2018-06-13 05:22:57
回答 1查看 1K关注 0票数 4

我在想,如果我启动下面的Intent.ACTION_GET_CONTENT

代码语言:javascript
复制
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("application/zip");
startActivityForResult(intent, RequestCode.REQUEST_CHOOSE_BACKUP_FILE);

并尝试通过以下方式从intent读取返回的Uri。

代码语言:javascript
复制
Uri uri = data.getData();

// Figure out extension
ContentResolver contentResolver = getContext().getContentResolver();
MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
final String extension = mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(uri));

File temp = null;
try {
    temp = File.createTempFile(Utils.getJStockUUID(), "." + extension);
} catch (IOException e) {
    e.printStackTrace();
}

// Delete temp file when program exits.
temp.deleteOnExit();

InputStream inputStream = null;
OutputStream outputStream = null;

try {
    inputStream = getContext().getContentResolver().openInputStream(uri);
    outputStream = new FileOutputStream(temp);

    byte[] buffer = new byte[8 * 1024];
    int bytesRead;
    while ((bytesRead = inputStream.read(buffer)) != -1) {
        outputStream.write(buffer, 0, bytesRead);
    }
} catch (IOException e) {
    Log.e(TAG, "", e);
} finally {
    close(outputStream);
    close(inputStream);
}

是否需要 READ_EXTERNAL_STORAGE 权限?

我测试了几轮。令我惊讶的是,我可以在不请求READ_EXTERNAL_STORAGE的情况下执行成功读取。

我只想确认一下,在所有类型的情况下,从Intent.ACTION_GET_CONTENT读取Uri都不需要READ_EXTERNAL_STORAGE

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-13 05:40:55

我曾经遇到过这样的情况:用户安装了第三方文件管理器(File Manager+),在这些情况下,如果没有首先授予READ_EXTERNAL_STORAGE权限,从ACTION_GET_CONTENT返回的Uri读取将失败并出现权限错误(仅当他们使用第三方应用程序选择文件时,如果他们使用Google Drive或正常的系统选择,则在没有权限的情况下可以正常工作)。

我能够通过在我的一个带有Play Store的模拟器上安装文件Manager+并尝试它来复制这个行为。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50826019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档