Android存储的坑

一直以来用到Android中关于Sdcard或者data/data相关的存储时,以及读写权限问题,难免会有混淆,这里做个总结。

总体

正所谓no-pic-u-say-jj,一直以来看很多总结Android存储的文章,我都很期待有一副图片可以总结以下各种存储。此处简单画了一份。

search screenshot

/sdcard

该部分不会随着App删除而删除;其他App(同个手机上的程序)以及用户(操作手机的人)可以访问;需要读写权限;不会计入App大小的计算

Environment.getExternalStorageDirectory();

/sdcard/

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES));

/sdcard/Pictures

/sdcard/Android/data/

该部分的特点在与4.4开始无需读写权限,会随着App删除而删除,会计入App大小计算

getExternalFilesDir(null);

/sdcard/Android/data/<package-name>/files

getExternalFilesDir(Environment.DIRECTORY_PICTURES);

/sdcard/Android/data/<package-name>/files/Pictures

getExternalFilesDirs(null);

[/sdcard/Android/data/<package-name>/files]

getExternalCacheDir();

/sdcard/Android/data/<package-name>/files

getExternalMediaDirs();

[/sdcard/Android/media/<package-name>]

/data/data/

无需读写权限,会随着App删除而删除,会计入App大小计算,其他App(同个手机上的程序)以及用户(操作手机的人)不可以访问(除非手机已经root)

getFilesDir();

/data/data/<package-name>/files

getCacheDir();

/data/data/<package-name>/cache

getDir("custom", Context.MODE_PRIVATE);

/data/data/<package-name>/app_custom