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

第 10 章 存储

目录

10.1. 获得存储目录
10.1.1. 公共存储目录
10.1.2. 内部存储
10.1.3. 扩展存储
10.1.4. 文件夹类型
10.2. FileProvider 配置
10.3. SharedPreferences
10.3.1. 操作模式
10.3.2. 保存数据
10.3.3. 读取数据
10.3.4. 通过 key 查询数据是否存在
10.3.5. 删除数据
10.3.6. 清空数据
10.3.7. 对象存储
10.3.8. SharedPreferences 读取物理存储文件
10.4. SD Card
10.4.1. SD Card 状态
10.4.2. Android 11 申请 sdcard 权限
10.5. 下载管理
10.5.1. 从 URL 下来文件
10.5.2. 安装 APK
10.5.3. 下载后接收广播通知
10.6. android.os.FileUriExposedException

10.1. 获得存储目录

10.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		
		
			

10.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
		
		
		

10.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		
		
		

10.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";