访问 Android 中的内部存储

Accessing internal storage in Android

我正在开发一个 Android 应用程序,它需要显示默认相机文件夹中的图像。我的问题是我不知道如何找到相机照片的内部默认存储文件夹

当我查找将 phone 连接到 PC 时(它是没有 SD 卡的三星 Galaxy S7),我看到图片存储在 DCIM/Camera 中。但是,这不起作用。这样做:files = new File("DCIM/Camera/"); 导致应用程序说那里什么都没有。

如何找到相机照片的默认内部存储文件夹?

首先,你需要了解Android。

  • 内部存储为app私有存储
  • 外部存储是public盟友可访问的存储区域

Android中的外部存储是指public存储,是指设备内存和SD卡中的内部存储。保存到外部存储是指设备内部和SD卡,而保存到内部存储是指应用程序私有存储。

因此,图像存储在外部存储或应用 public 存储中,任何应用都可以在其中保存、加载和管理文件。这些图像 publically 可用,因此根据开发人员定义不在内部存储中。

现在,您需要 WRITE_EXTERNAL_STORAGE 权限,如果您的目标是 API 23,您还需要申请它,因为它是一个危险的权限。

要访问图像,您需要创建一个新文件:

storageDir = new File(
    Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_PICTURES
    ), 
    "album name here, or remove this part to save or load directly into DCIM"
);

这个可以用来保存或者载入图片,但是记得在载入之前索引目录找到图片防止IOException