关闭

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

6412人阅读 评论(3) 收藏 举报
分类:

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

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

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

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

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

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

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

 @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                           @NonNull int[] grantResults) {
        //super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode)
        {
            case 1:
                if (grantResults[0]== PackageManager.PERMISSION_GRANTED)
                {
                    //创建文件夹
                    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
                        File file = new File(Environment.getExternalStorageDirectory() + "/aa/bb/");
                        if (!file.exists()) {
                            Log.d("jim", "path1 create:" + file.mkdirs());
                        }    
                }
                break;
        }
    }


6
0
查看评论

Android mkdirs或mkdir一直返回false(createNewFile也失败)

昨天要写一个Android自定义异常捕获的类,然后把异常信息保存到手机中,需求很简单,网上例子也很多,我用的是这个自定义异常捕获,这段代码在Android6.0(不包括6.0)以下的手机上运行没有问题,但是Android6.0增加了权限管理,也即运行时权限(参考android M运行时权限解析以...
  • zytygq
  • zytygq
  • 2017-05-07 18:18
  • 2620

Suse环境File.mkdirs()创建的目录判断是否可写返回false的问题

使用Apache common io的FileUtils.copyDirectory将一个目录拷贝到另一个目录,执行时总是报目标目录不可写,但是目标目录是在拷贝前创建了,telnet到后台查看用户对该目录的权限也是有的,很奇怪! 多次尝试发现:如果构造File的路径中有“..”,那么使用mkdirs...
  • skykula
  • skykula
  • 2013-11-18 20:34
  • 684

android mkdirs()不能创建目录

今天写代码,本来想拷贝Assets的文件到SD卡,但是老是拷贝不成功,然后不断调试,发现是
  • yulinyige
  • yulinyige
  • 2014-07-20 12:36
  • 3693

android 记得用mkdirs不要用mkdir

反正加s就对了,mkdir不能创建多个目录   《------------------------------------------------------------------------------------------------------------------------...
  • avi9111
  • avi9111
  • 2011-10-29 16:55
  • 27408

在Android中创建文件

package com.example.filedemo1; import java.io.File; import java.io.IOException; import android.app.Activity; import android.os.Bundle; import androi...
  • guoqingshuang
  • guoqingshuang
  • 2016-09-05 20:37
  • 6092

android 6.0 创建文件或文件夹失败

在AndroidManifest.xml中添加<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>权限 代码如下File appDir = new File(Envir...
  • yukun314
  • yukun314
  • 2016-08-01 10:31
  • 7697

java mkdir()和mkdirs()区别

mkdirs()可以建立多级文件夹, mkdir()只会建立一级的文件夹, 如下: new File("/tmp/one/two/three").mkdirs(); 执行后, 会建立tmp/one/two/three四级目录 ...
  • CNnumen
  • CNnumen
  • 2013-01-04 11:13
  • 47903

Android中创建文件夹和文件的操作

本文重温讲解下Android中如何创建文件夹和文件, 1、首先需要添加权限   2、FolderCreate.java文件,用来创建文件夹 public class FolderCreate { /** * ...
  • shandong_chu
  • shandong_chu
  • 2015-05-29 17:00
  • 21037

华为P8,文件夹创建不成功,权限问题

今天测试把手机拿过来,说为什么华为P8选择头像保存不了,吓了我一跳,赶快debug了一下,发现是文件夹创建不成功,难道华为的创建文件夹跟别的手机不一样吗,赶忙查了资料,发现没变啊,但是网上也有人出现这个问题。 一开始我是认为是权限问题,可是我直接在手机里面信任该应用,发现还是不行,然后又继续排查,...
  • TIANLANG3
  • TIANLANG3
  • 2016-10-11 14:39
  • 2077

android文件缓存及SD卡创建文件夹失败解决和bitmap内存溢出解决

1.相关代码:     添加权限: /** 获取SD卡路径 **/ private static String getSDPath() { String sdcardPath = null; boolean...
  • zi413293813
  • zi413293813
  • 2014-08-27 10:11
  • 2694
    个人资料
    • 访问:204967次
    • 积分:2778
    • 等级:
    • 排名:第15237名
    • 原创:90篇
    • 转载:18篇
    • 译文:1篇
    • 评论:36条
    文章分类
    最新评论