当前位置: 首页 > >

Android无法在外置存储上创建文件夹,file.mkdirs()一直返回false

发布时间:

如果你项目的targetsdkversion大于等于23,按照以往在外部存储上创建目录的方法肯定一直返回false。这种情况在Android6.0之前都是不存在的,6.0在权限管理方面更加全面,在读写外置存储的时候不仅要在manifest中静态授权,还需要在代码中动态授权。


0.首先,在Manifest中添加基本的权限:






[html]?
view plain
?copy


?




  1. ??
  2. ??????
  3. ??????








1.然后,在Activity中发起权限请求:






[java]?
view plain
?copy


?




  1. ActivityCompat.requestPermissions(MainActivity.this,?new?String[]{android??
  2. ????????????????????????.Manifest.permission.WRITE_EXTERNAL_STORAGE},?1);??




此时手机上会收到一条权限请求通知,用户允许之后,进入onRequestPermissionsResult()回调函数。


2.重写Activity中的onRequestPermissionsResult()函数






[java]?
view plain
?copy


?




  1. @Override??
  2. ???public?void?onRequestPermissionsResult(int?requestCode,?@NonNull?String[]?permissions,??
  3. ??????????????????????????????????????????@NonNull?int[]?grantResults)?{??
  4. ???????//super.onRequestPermissionsResult(requestCode,?permissions,?grantResults);??
  5. ???????switch?(requestCode)??
  6. ???????{??
  7. ???????????case?1:??
  8. ???????????????if?(grantResults[0]==?PackageManager.PERMISSION_GRANTED)??
  9. ???????????????{??
  10. ???????????????????//创建文件夹??
  11. ???????????????????if?(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))?{??
  12. ???????????????????????File?file?=?new?File(Environment.getExternalStorageDirectory()?+?"/aa/bb/");??
  13. ???????????????????????if?(!file.exists())?{??
  14. ???????????????????????????Log.d("jim",?"path1?create:"?+?file.mkdirs());??
  15. ???????????????????????}??????
  16. ???????????????}??
  17. ???????????????break;??
  18. ???????}??
  19. ???} ?



友情链接: 传奇百科网 招聘百科网 非凡百科网 游艇百科网 口红百科网 创业百科网 软木百科网