Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

第 116 章 存储

目录

116.1. 获得存储目录
116.1.1. 公共存储目录
116.1.2. 内部存储
116.1.3. 扩展存储
116.1.4. 文件夹类型
116.2. FileProvider 配置
116.3. SharedPreferences
116.3.1. 操作模式
116.3.2. 保存数据
116.3.3. 读取数据
116.3.4. 通过 key 查询数据是否存在
116.3.5. 删除数据
116.3.6. 清空数据
116.3.7. 对象存储
116.3.8. SharedPreferences 读取物理存储文件
116.4. SD Card
116.4.1. SD Card 状态
116.4.2. Android 11 申请 sdcard 权限
116.5. 下载管理
116.5.1. 从 URL 下来文件
116.5.2. 安装 APK
116.5.3. 下载后接收广播通知
116.6. android.os.FileUriExposedException

116.1. 获得存储目录

116.1.1. 公共存储目录

			
Log.d(TAG, Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString());
Log.d(TAG, getExternalFilesDir(Environment.DIRECTORY_PICTURES).toString());
            		
/storage/emulated/0/Pictures

/storage/emulated/0/Android/data/cn.netkiller.album.education/files/Pictures		
			
			

公共存储目录不会因为APP卸载而删除

		
Environment.getExternalStorageDirectory():                     /storage/emulated/0
Environment.getExternalStoragePublicDirectory(""):             /storage/emulated/0
Environment.getExternalStoragePublicDirectory("test"):         /storage/emulated/0/test
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES):  /storage/emulated/0/Pictures		
		
			

116.1.2. 内部存储

		
Environment.getDataDirectory():      /data
Context.getCacheDir():               /data/data/cn.netkiller.test/cache
Context.getFilesDir():               /data/data/cn.netkiller.test/files
Context.getFileStreamPath(""):       /data/data/cn.netkiller.test/files
Context.getFileStreamPath("test"):   /data/data/cn.netkiller.test/files/test
		
		
		

116.1.3. 扩展存储

		
Environment.getExternalStorageDirectory():               /storage/emulated/0
Context.getExternalCacheDir():                           /storage/emulated/0/Android/data/cn.netkiller.test/cache
Context.getExternalFilesDir(""):                         /storage/emulated/0/Android/data/cn.netkiller.test/files
Context.getExternalFilesDir("test"):                     /storage/emulated/0/Android/data/cn.netkiller.test/files/test
Context.getExternalFilesDir(Environment.DIRECTORY_PICTURES):    /storage/emulated/0/Android/data/cn.netkiller.test/files/Pictures		
		
		

116.1.4. 文件夹类型

		
public static String DIRECTORY_MUSIC = "Music";
public static String DIRECTORY_ALARMS = "Alarms";
public static String DIRECTORY_NOTIFICATIONS = "Notifications";
public static String DIRECTORY_PICTURES = "Pictures";
public static String DIRECTORY_MOVIES = "Movies";
public static String DIRECTORY_DOWNLOADS = "Download";
public static String DIRECTORY_DCIM = "DCIM";
public static String DIRECTORY_DOCUMENTS = "Documents";