Android 6.0 无法在SD卡创建目录的方法

 更新时间:2018年08月02日 10:11:02   作者:BlueAmerTJ  
今天小编就为大家分享一篇Android 6.0 无法在SD卡创建目录的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

摘要

今天开发中遇到一个问题,项目无法在Android6.0设备的SD卡创建目录,在Android6.0以下的移动设备测试了5.0 、4.3的设备,均正常,但是在Android6.0却不正常。

经过排查,执行下列代码无法在6.0的设备上面创建目录

File dir = new File(DbConfig.BASE_PATH);
if (!dir.exists()) {
 dir.mkdirs();
}

衍生知识

2015年5月29日中Google I/O开发者大会,Google 发布了 Android M,并命名为“棉花糖”(Marshmallow),对于开发者来说, Android 6.0(API 23)给开发者带来的一些变化。

权限管理是 Android M 最大的改变

变化描述:

权限管理更加精细,并且由以前的安装时静态授权,改为现在的运行时动态授权。

大家对 Android 的权限吐槽已久,Android 应该能极大的改善这方面的问题。

主要改变有:

系统设置中可以对 APP 各个权限单独控制权限根据内容进行分组了

普通权限还是在安装时授权,其他权限在运行时系统弹窗授权,并且要解析使用这个权限的目的

对于开发者来说,需要小心处理权限相关的问题。在使用某个功能的时候,需要总是判断是否有改权限,并且通过合适的方式请求用户授权。

现在描述一下处理的解决方案

1 发起读写设备存储空间的权限

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

2 写权限请求回掉函数

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
 boolean writeAccepted = false;
 switch (requestCode) {
  case 1:
   writeAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED;
   break;
 }
}

3 执行创建目录代码

if (writeAccepted) {
  String state = Environment.getExternalStorageState();
  if (Environment.MEDIA_MOUNTED.equals(state)) {
   File dir = new File(DbConfig.BASE_PATH);
   if (!dir.exists()) {
   dir.mkdirs();
   }
  }
 }

以上这篇Android 6.0 无法在SD卡创建目录的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Android仿QQ登陆窗口实现原理

    Android仿QQ登陆窗口实现原理

    今天根据腾讯qq,我们做一个练习,来学习如何制作一个漂亮的布局仿QQ登陆,还是一个启动画面,之后进入登录页面,导航页面就不介绍了,大家可以参考微信的导航页面
    2013-01-01
  • Android修改Dialog样式的方法

    Android修改Dialog样式的方法

    Android 对话框支持自定义标题,内容,按钮和点击事件,基本上可以满足我们日常的使用。 但有时候我们想要修改对话框的文字,按钮颜色等,系统并没有提供对应的方法,正常情况下只能自定义布局。 接下来通过源码解析介绍几种修改 Dialog样式的方法。
    2021-05-05
  • Android自定义View实现带音效和震动的SeekBar

    Android自定义View实现带音效和震动的SeekBar

    这篇文章主要为大家详细介绍了Android如何自定义View实一个带音效和震动的SeekBar,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • android中Glide实现加载图片保存至本地并加载回调监听

    android中Glide实现加载图片保存至本地并加载回调监听

    本篇文章主要介绍了android中Glide实现加载图片保存至本地并加载回调监听,具有一定的参考价值,有兴趣的可以了解一下
    2017-09-09
  • Flutter 全局点击空白处隐藏键盘实战

    Flutter 全局点击空白处隐藏键盘实战

    这篇文章主要介绍了Flutter 全局点击空白处隐藏键盘实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Android Studio给各种控件加边框的操作方法

    Android Studio给各种控件加边框的操作方法

    这篇文章主要介绍了Android Studio给各种控件加边框的操作方法,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Android画画板的制作方法

    Android画画板的制作方法

    这篇文章主要为大家详细介绍了Android画画板的制作方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • 微信公众平台开发接口PHP SDK完整版

    微信公众平台开发接口PHP SDK完整版

    官方提供的SDK只有一个文本消息功能,我们将所有消息的消息类型及事件响应都整理了进来,并且加入日志记录
    2014-05-05
  • Android md5加密与php md5加密一致详解

    Android md5加密与php md5加密一致详解

    这篇文章主要介绍了Android md5加密与php md5加密一致详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • Android Gradle Build Error:Some file crunching failed, see logs for details的快速解决方法

    Android Gradle Build Error:Some file crunching failed, see l

    这篇文章主要介绍了Android Gradle Build Error:Some file crunching failed, see logs for details的快速解决方法的相关资料,需要的朋友可以参考下
    2016-10-10

最新评论