一、前言:
用Android X版本SDK时,使用到以下相关方法:Environment.getExternalStorageDirectory(), Environment.getExternalStoragePublicDirectory()时,AS会提示该方法已废弃,但是提供了Context的getExternalFilesDir(String)方法(其中一方面是为了安全性 考虑,感兴趣的可以查看一下文档),其他的还有MediaStore以及Intent的ACTION_OPEN_DOCUMENT方法

2、可以使用
getExternalFilesDir(String)不需要文件的读写权限,app删除时,该文件会一同被删除
String可以传null或者其他值
图片.png
DIRECTORY_ALARMS //警报的铃声
DIRECTORY_DCIM //相机拍摄的图片和视频保存的位置
DIRECTORY_DOWNLOADS //下载文件保存的位置
DIRECTORY_MOVIES //电影保存的位置, 比如 通过google play下载的电影
DIRECTORY_MUSIC //音乐保存的位置
DIRECTORY_NOTIFICATIONS //通知音保存的位置
DIRECTORY_PICTURES //下载的图片保存的位置
DIRECTORY_PODCASTS //用于保存podcast(博客)的音频文件
DIRECTORY_RINGTONES //保存铃声的位置
//已经废弃,AndroidX会报错
String APP_ROOT_PATH = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+ "/" + BaseApplication.instance.getPackageName();
//使用这个
String absolutePath = BaseApplication.instance.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath();
//传入值为空
String path2 = BaseApplication.instance.getExternalFilesDir(null).getAbsolutePath();
Log.d("LUO","===APP_ROOT_PATH: "+APP_ROOT_PATH);
Log.d("LUO","===absolutePath: "+absolutePath);
Log.d("LUO","===path2: "+path2);
LUO: ===APP_ROOT_PATH: /storage/emulated/0/Download/com.dotc.demo1
LUO: ===absolutePath: /storage/emulated/0/Android/data/com.dotc.demo1/files/Download
LUO: ===path2: /storage/emulated/0/Android/data/com.dotc.demo1/files
3、获取APP路径
1、getExternalFilesDir()和getFilesDir()
public String getFilesPath( Context context ){
String filePath ;
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
|| !Environment.isExternalStorageRemovable()) {
//外部存储可用
filePath = context.getExternalFilesDir(null).getPath();
}else {
//外部存储不可用
filePath = context.getFilesDir().getPath() ;
}
return filePath ;
}
函数返回路径/storage/emulated/0/Android/data/包名/files
用来存储一些长时间保留的数据,应用卸载会被删除
2、getExternalCacheDir和getCacheDir
public String getCachePath( Context context ){
String cachePath ;
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
|| !Environment.isExternalStorageRemovable()) {
//外部存储可用
cachePath = context.getExternalCacheDir().getPath() ;
}else {
//外部存储不可用
cachePath = context.getCacheDir().getPath() ;
}
return cachePath ;
}
函数返回路径/storage/emulated/0/Android/data/包名/cache
用来存储一些临时缓存数据
网友评论