美文网首页
Environment.getExternalStorageDi

Environment.getExternalStorageDi

作者: 因为我的心 | 来源:发表于2021-06-07 10:55 被阅读0次

一、前言:

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


图片.png

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
用来存储一些临时缓存数据

相关文章

网友评论

      本文标题:Environment.getExternalStorageDi

      本文链接:https://www.haomeiwen.com/subject/edcleltx.html