Environment.getExternalStoragePublicDirectory提供内部存储

时间:2013-10-19 12:22:32

标签: android

我正在保存这样一张照片:

File dcimDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
File picsDir = new File(dcimDir, "MyPics");
picsDir.mkdirs(); //make if not exist
File newFile = new File(picsDir, "image.png"));
OutputStream os;
try {
    os = new FileOutputStream(newFile);

    target.compress(CompressFormat.PNG, 100, os);

    os.flush();
    os.close();
    b.recycle();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

然而,当我通过Windows查找图像时,它位于内部存储器中,图库确认了这一点:

On PC

Gallery details

最后一个令人困惑,它表示内部存储器,但文件路径中也有sdcard0

那么外部什么时候不代表外部?它是设备设置的东西,还是我错过使用/错过理解getExternalStoragePublicDirectory

1 个答案:

答案 0 :(得分:12)

MTP引擎有时会将getExternalStorageDirectory()报告为“内部存储”,这就是为什么当您将设备作为卷安装在Windows,Linux等上时,它会以该名称显示。

外部存储始终意味着用户可以通过USB电缆访问的存储空间。 “内部存储”标签可能用于外部存储器是板载(“内部”)闪存的一部分的设备上。