【问题标题】:Android Q: Load image from fileAndroid Q:从文件加载图像
【发布时间】:2021-07-13 22:42:44
【问题描述】:

我在从内部存储加载图像时遇到问题,我尝试过以下代码:

final String imagePath = "/storage/emulated/0/dummy.jpg";
ImageView img = findViewById(R.id.test_image);

  if (isStoragePermissionGranted()){
      File file = new File(imagePath);
      if (file.exists()) {
          Log.d("GalleryImages", "file is exist");
          Uri uri = Uri.fromFile(file);
          img.setImageURI(uri);
      }else {
          Log.d("GalleryImages", "file is not exist");
      }
   }
private   boolean isStoragePermissionGranted() {
        if (Build.VERSION.SDK_INT >= 23) {
            if (checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE)
                    == PackageManager.PERMISSION_GRANTED) {
                Log.d("GalleryImages","Permission is granted");
                return true;
            } else {

                Log.d("GalleryImages","Permission is revoked");
                ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
                return false;
            }
        }
        else {
            Log.d("GalleryImages","Permission is granted");
            return true;
        }
    }

和xml:

<ImageView
        android:id="@+id/test_image"
        android:scaleType="fitXY"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#63C57878" />

结果是:

D/GalleryImages:已授予权限
D/GalleryImages:文件存在

但 ImageView 上什么都没有,

我也尝试过使用 Picaso 加载图像:

Picasso.get().load(file).error(R.mipmap.ic_launcher).into(img);

但也没有用。

更新

  • 我已经尝试了这些solutions,但对我不起作用。
  • 我已尝试在 android pie 上运行代码正常工作。
  • 我尝试在另一台无法运行的 android Q 设备上运行代码。

【问题讨论】:

  • 尝试在清单中使用&lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="replace"/&gt;
  • @Zain 感谢您的评论我更改了权限,我还尝试通过添加tools:node="replace" 来授予读写权限,但图像视图上没有显示任何内容它说 已生成权限 文件存在但不加载图片

标签: android imageview android-internal-storage


【解决方案1】:

经过长时间的搜索,我通过添加到 AndroidManifest.xml 上的应用程序找到了解决方案 here

android:requestLegacyExternalStorage="true"

希望它能帮助其他人。

【讨论】:

    猜你喜欢
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 2011-07-07
    相关资源
    最近更新 更多