无法在Android 10(Q)中使用glide从设备加载图像
滑动未加载从库中拾取的图像。 尽管授予了写和读权限,但它始终显示以下错误无法在Android 10(Q)中使用glide从设备加载图像,android,kotlin,android-glide,Android,Kotlin,Android Glide,滑动未加载从库中拾取的图像。 尽管授予了写和读权限,但它始终显示以下错误 java.io.FileNotFoundException: /storage/emulated/0/Pictures/JPEG_20200120103701_3365226945725752825.jpg: open failed: EACCES (Permission denied) 在android清单中添加此行 android:requestLegacyExternalStorage=“true”添加此行and
java.io.FileNotFoundException: /storage/emulated/0/Pictures/JPEG_20200120103701_3365226945725752825.jpg: open failed: EACCES (Permission denied)
在android清单中添加此行
android:requestLegacyExternalStorage=“true”添加此行android清单
android:requestLegacyExternalStorage=“true”没有画廊应用程序会为您提供该文件路径 因此,您一直在胡乱处理getRealPathFromUri()之类的东西 这在Q上不行,因为没有人可以访问该路径 最好直接使用获得的uri
你也应该在Q下面这样做。没有任何图库应用程序会给你提供该文件路径 因此,您一直在胡乱处理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;
}
});
Glide.with(上下文)
.load(新文件(fileUri.getPath())//图片的Uri
.into(图像视图)
.listener(新的RequestListener(){
@凌驾
公共布尔onException(异常e、字符串模型、目标、布尔isFirstResource){
Log.e(“xmx1”,“Error”+e.toString());
返回false;
}
@凌驾
公共布尔值onResourceReady(GlideDrawable资源、字符串模型、目标、布尔值isFromMemoryCache、布尔值isFirstResource){
Log.e(“xmx1”,“无错误”);
返回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"
... >
创建文件实例并将要加载到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;
}
});
Glide.with(上下文)
.load(新文件(fileUri.getPath())//图片的Uri
.into(图像视图)
.listener(新的RequestListener(){
@凌驾
公共布尔onException(异常e、字符串模型、目标、布尔isFirstResource){
Log.e(“xmx1”,“Error”+e.toString());
返回false;
}
@凌驾
公共布尔值onResourceReady(GlideDrawable资源、字符串模型、目标、布尔值isFromMemoryCache、布尔值isFirstResource){
Log.e(“xmx1”,“无错误”);
返回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"
在清单文件中。您必须传递相关的uri,而不是路径
Glide.with(context).load(model.photoUri).into(image)
这样你就不需要添加了
android:requestLegacyExternalStorage="true"
在您的清单文件中。请提供额外信息。这个问题太糟糕了。这类问题通常有很多负面标记。请检查答案。请提供额外信息。这个问题太糟糕了。这类问题通常有很多负面标记。请检查答案我使用了下面的直接路径,但不工作没有错误,但无法在图像视图中显示
file:///storage/emulated/0/DCIM/Camera/20200319_162840.jpg
我使用的是如下所示的直接路径,但不工作没有错误,但无法在图像视图中显示file:///storage/emulated/0/DCIM/Camera/20200319_162840.jpg