提问人:Laurens V 提问时间:11/16/2023 最后编辑:Laurens V 更新时间:11/16/2023 访问量:27
在 Android 13 (sdk 33) 中从 uri 获取文件:权限被拒绝
Get file from uri in Android 13 (sdk 33) permission denial
问:
我正在尝试使用我的 uri 检索文件。只有当我想通过我的 openInputStream 检索它时,我才会收到以下错误:
权限拒绝:打开提供程序 com.android.externalstorage.ExternalStorageProvider 从 ProcessRecord{b3d0dd0 18767:com.workbon/u0a163} (pid=18767, uid=10163) 要求您使用 ACTION_OPEN_DOCUMENT 或相关 蜜蜂属
我的代码,是的,它仍然是 Java 如下:
InputStream inputStream = context.getContentResolver().openInputStream(fileUri);
byte[] bytes = readBytes(inputStream);
return Base64.encodeToString(bytes, Base64.DEFAULT);
private static byte[] readBytes(InputStream inputStream) throws IOException {
ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int len;
while ((len = inputStream.read(buffer)) != -1) {
byteBuffer.write(buffer, 0, len);
}
return byteBuffer.toByteArray();
}
我的目标是最终将文件转换为 base64 数据,以便我可以将其传递给 API。
除其他事项外,我在我的 Android 清单中拥有这些权限。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28"/>
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION"/>
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE"
tools:ignore="ProtectedPermissions" />
希望有人能帮我解决这个问题。这是一个特定的 Android 13+ 问题。
答: 暂无答案
评论
fileUri