android Q版本外部存储问题以及获取空间大小问题
16lz
2021-01-24
Q版本:
1.在manifest 文件中添加权限
2.在application 添加
android:requestLegacyExternalStorage="true"
3.在对应的activity中添加 动态获取权限
private fun applyStoragePermission () { val permissionWrite = ContextCompat.checkSelfPermission(applicationContext, WRITE_EXTERNAL_STORAGE) val permissionRead = ContextCompat.checkSelfPermission(applicationContext, READ_EXTERNAL_STORAGE) if (permissionWrite != PackageManager.PERMISSION_GRANTED || permissionRead != PackageManager.PERMISSION_GRANTED) { //Toast.makeText(this, "正在请求权限", Toast.LENGTH_SHORT).show() //申请权限,特征码自定义为1,可在回调时进行相关判断 ActivityCompat.requestPermissions( this@MainActivity, arrayOf(WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE),1) } }
获取存储空间:Environment.getExternalStorageDirectory();
判断有sd卡存储存在或者加载
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED
/** 得到SD可用内存 **/@SuppressLint("NewApi")private String getSdFree(){if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ StatFs fs = new StatFs(Environment.getExternalStorageDirectory().getPath());//Android API18之前:fs.getAvailableBlocks()*fs.getBlockSize()return Formatter.formatFileSize(this, (fs.getAvailableBytes()));}return "未装载";}
获取手机默认内置存储空间:
/** 得到系统可用内存 **/@SuppressLint("NewApi")private String getMemFree(){ StatFs fs = new StatFs(Environment.getDataDirectory().getPath()); return Formatter.formatFileSize(this, (fs.getAvailableBytes()));}
更多相关文章
- cts测试流程
- android电话处理
- unity3d开发需要知道的一些常量
- android中保存Bitmap图片到指定文件夹中的方法
- [Android][M0][Call] 拨打电话
- Android(安卓)获取通讯录联系人,打开通讯录获取联系人信息;整个流
- android 缓存Bitmap - 开发文档翻译
- Android判断某个Activity是否正在前台显示
- Android获取手机当前连接的WiFi信息(SSID,IP,连接状态)