gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 13:04:02 29 4
gpt4 key购买 nike

我想知道,如果我启动以下 Intent.ACTION_GET_CONTENT

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("application/zip");
startActivityForResult(intent, RequestCode.REQUEST_CHOOSE_BACKUP_FILE);

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

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 的情况下执行成功读取。

我只是想确认 READ_EXTERNAL_STORAGE 在所有情况下都不需要从 Intent.ACTION_GET_CONTENT 中读取 Uri。

最佳答案

我遇到过用户安装第三方文件管理器 ( File Manager+ ) 的情况,在这些情况下,如果未首先授予 READ_EXTERNAL_STORAGE 权限(仅如果他们使用第三方应用程序来选择文件,如果他们使用 Google Drive 或正常的系统选择,它在未经许可的情况下工作正常)。

通过在我的一个带有 Play 商店的模拟器上安装 File Manager+ 并进行试用,我能够复制该行为。

关于android - 从 Intent.ACTION_GET_CONTENT 读取 Uri 是否需要 READ_EXTERNAL_STORAGE 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50826019/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com