无法使用mkdirs在Android 6.0上创建目录(存储权限ok)

Mir*_*rko 5 storage android mkdirs

我正在尝试使用新的运行时权限将我的应用源代码更新为Android 6.0.

但是,如果用户授予应用程序存储权限,则应用程序无法'onRequestPermissionsResult'使用该方法在方法中创建目录'mkdirs'.

在AndroidManifest.xml中我把'uses-permission':

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xample.provasd"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="23" />

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

    <!-- application, activity, etc -->
Run Code Online (Sandbox Code Playgroud)

然后在MainActivity中处理权限请求:

public void executeButton(View view){
        final String[] PERMISSIONS_STORAGE = { Manifest.permission.WRITE_EXTERNAL_STORAGE };
        //Asking request Permissions 
        ActivityCompat.requestPermissions(this,PERMISSIONS_STORAGE, 9);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        boolean writeAccepted = false;
        switch(requestCode){
        case 9:
            writeAccepted = grantResults[0]==PackageManager.PERMISSION_GRANTED;
            break;
        }
        if(writeAccepted){
            String state = Environment.getExternalStorageState();
            if (Environment.MEDIA_MOUNTED.equals(state)) {
                File dir = new File(Environment.getExternalStorageDirectory()+"/"+"TestFolder");
                boolean b = dir.mkdirs();
                if(b){
                    Log.i("TAG", "WOW! "+dir+" created!");
                }else{
                    Log.e("TAG", "OPS! "+dir+" NOT created! To be sure: new dir exist? "+dir.exists());
                }
            }
        }       
    }
Run Code Online (Sandbox Code Playgroud)

在模拟器上启动应用程序,显示请求对话框:允许'onRequestPermissionsResult'执行正文的权限(writeAccepted=true)但是没有创建文件夹!

这是LogCat中出现的内容:

I/TAG(9020): Permission ok
I/TAG(9020): Try to create dir: /storage/3143-1CEA/TestFolder
E/TAG(9020): OPS! /storage/3143-1CEA/TestFolder NOT created! To be sure: new dir exist? false
Run Code Online (Sandbox Code Playgroud)

我不明白原因.

拜托,有人可以帮帮我吗?

谢谢,

米尔科

小智 1

问题可能不在于代码。如果您的手机运行的是Android 6.0,请检查您的应用程序是否有足够的权限。