android 存储数据权限,Android 手机存储问题及权限

RAM(Random-Access Memory)

类比电脑的内存,断电后数据会被清除。

ROM:

可以理解为系统;

内部存储:(/data分区)

存储系统文件和应用的私有文件,首选 项,数据库等文件。路径为/data/data/ ...,可通过Environment.getDataDirectory().getPath()方法获取;

外部存储:( /sdcard分 区)

路径一般为:/storage/emulated/...,可通过Environment.getExternalStorageDirectory().getPath()方法获取;

sd卡亦属于外部存储,或者称为二级外部存储

SharedPreferences

以键值对形式进行存储,数据以xml形式存储在/data/data/包名/shared_prefs/中;

===========================================================

内部存储

直接在设备的内部存储中保存文件。默认情况下,保存到内部存储的文件是应用的私有文件,其他应用(和用户)不能访问这些文件。 当用户卸载应用时,这些文件也会被移除。

Context.getCacheDir():/data/data/包名/cache

Context.getFilesDir():/data/data/包名/files

外部存储

该存储可能是可移除的存储介质(例如 SD 卡,二级)或内部(不可移除,一级)存储。 保存到外部存储的文件是全局可读取文件,而且,在计算机上启用 USB 大容量存储以传输文件后,用户可修改这些文件。存储分为两种,一种是应用卸载后,存储数据也会被删除,一种永久存储,即使应用被卸载,存储的数据依然存在。

外部存储私有 想应用被卸载后,与该应用相关的数据也清除掉,可

通过Context.getExternalFilesDir()方法可以获取到 sdcard/Android/data/包名/files/目录,放一些长时间保存的数据

通过Context.getExternalCacheDir()方法可以获取到 sdcard/Android/data/包名/cache/目录,存放临时缓存数据

使用上面的方法,当应用在被用户卸载后,SDCard/Android/data/包名/

这个目录下的所有数据都会被删除,不会留下垃圾信息。

而且上面二个目录分别对应 设置->应用->应用详情里面的”清除数据“与”清除缓存“选项

外部存储一般 想要做到应用卸载后数据仍然保存,则

Environment.getExternalStorageDirectory().getAbsolutePath()

Environment.getExternalStoragePublicDirectory(Environment. ...).getAbsolutePath()

public String getDiskCacheDir(Context context) {

String cachePath = null;

if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) || !Environment.isExternalStorageRemovable()) {

cachePath = context.getExternalCacheDir().getPath();

} else {

cachePath = context.getCacheDir().getPath();

}

return cachePath;

}

Environment.getDataDirectory() = /data

Environment.getDownloadCacheDirectory() = /cache

Environment.getExternalStorageDirectory() = /mnt/sdcard

Environment.getExternalStoragePublicDirectory(“test”) = /mnt/sdcard/test

Environment.getRootDirectory() = /system

getPackageCodePath() = /data/app/com.my.app-1.apk

getPackageResourcePath() = /data/app/com.my.app-1.apk

getCacheDir() = /data/data/com.my.app/cache

getDatabasePath(“test”) = /data/data/com.my.app/databases/test

getDir(“test”, Context.MODE_PRIVATE) = /data/data/com.my.app/app_test

getExternalCacheDir() = /mnt/sdcard/Android/data/com.my.app/cache

getExternalFilesDir(“test”) = /mnt/sdcard/Android/data/com.my.app/files/test

getExternalFilesDir(null) = /mnt/sdcard/Android/data/com.my.app/files

getFilesDir() = /data/data/com.my.app/files

你可能感兴趣的:(android,存储数据权限)