无法在 Android 10 (Q) 中使用滑行从设备加载图像
Unable to load image from device using glide in Android 10 (Q)
Glide 未加载从图库中选取的图像。
尽管给予了写入和读取权限,它总是显示以下错误。
java.io.FileNotFoundException: /storage/emulated/0/Pictures/JPEG_20200120103701_3365226945725752825.jpg: open failed: EACCES (Permission denied)
添加此行 android 清单
android:requestLegacyExternalStorage="true"
没有图库应用程序会为您提供该文件路径。
所以你一直在摆弄像 getRealPathFromUri() 这样的东西。
这不会在 Q 上执行,因为没有人可以访问该图片路径。
最好直接使用获取的uri
你也应该在 Q 下面这样做。
创建文件实例并传递要加载到 ImageView 的文件的 uri
失败时也可以使用 RequestListener 追踪错误
Glide.with(context)
.load(new File(fileUri.getPath())) // Uri of the picture
.into(imageview)
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
Log.e("xmx1","Error "+e.toString());
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
Log.e("xmx1","no Error ");
return false;
}
});
确保您已添加
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
在您的应用程序标签内```
<application
android:name=".App"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:requestLegacyExternalStorage="true"
... >
你必须传递相关的uri,而不是路径,
Glide.with(context).load(model.photoUri).into(image)
这样就不需要添加了
android:requestLegacyExternalStorage="true"
在您的清单文件中。
Glide 未加载从图库中选取的图像。 尽管给予了写入和读取权限,它总是显示以下错误。
java.io.FileNotFoundException: /storage/emulated/0/Pictures/JPEG_20200120103701_3365226945725752825.jpg: open failed: EACCES (Permission denied)
添加此行 android 清单
android:requestLegacyExternalStorage="true"
没有图库应用程序会为您提供该文件路径。
所以你一直在摆弄像 getRealPathFromUri() 这样的东西。
这不会在 Q 上执行,因为没有人可以访问该图片路径。
最好直接使用获取的uri
你也应该在 Q 下面这样做。
创建文件实例并传递要加载到 ImageView 的文件的 uri 失败时也可以使用 RequestListener 追踪错误
Glide.with(context)
.load(new File(fileUri.getPath())) // Uri of the picture
.into(imageview)
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
Log.e("xmx1","Error "+e.toString());
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
Log.e("xmx1","no Error ");
return false;
}
});
确保您已添加
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
在您的应用程序标签内```
<application
android:name=".App"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:requestLegacyExternalStorage="true"
... >
你必须传递相关的uri,而不是路径,
Glide.with(context).load(model.photoUri).into(image)
这样就不需要添加了
android:requestLegacyExternalStorage="true"
在您的清单文件中。