无法在Android Oreo中创建目录(API 26)

时间:2017-11-10 07:30:48

标签: android android-external-storage android-8.0-oreo

我已经阅读了有关Android Oreo行为和更改的文档。

我知道为Android Oreo(API 26)创建文件目录有不同的程序

代码:

 File mediaStorageDir = null;

    if (Build.VERSION.SDK_INT >= 26) {
        mediaStorageDir = new File(Environment.getExternalStorageDirectory().toString(), "MyDirectory");
        Log.v("HEREEEEE","YES");
    } else {
        mediaStorageDir = new File(Environment.getExternalStorageDirectory().toString()
                + File.separator + "MyDirectory");
    }

    if (!mediaStorageDir.exists()) {
        if (!mediaStorageDir.mkdirs()) {
            Toast.makeText(RecordVideoActivity.this, "Failed to create directory MyDirectory.",
                    Toast.LENGTH_LONG).show();
            return null;
        }
    }

但是每次我都会为 干嘛创建目录MyDirectory。 我能够Log.v("HEREEEEE","YES");但也不知道它没有创建目录。

高级帮助将不胜感激。!

1 个答案:

答案 0 :(得分:1)

发布棒棒糖后你必须征得许可,你可以在这篇文章中找到答案here

public  boolean isStoragePermissionGranted() {
    if (Build.VERSION.SDK_INT >= 23) {
        if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
                == PackageManager.PERMISSION_GRANTED) {
            Log.v(TAG,"Permission is granted");
            return true;
        } else {

            Log.v(TAG,"Permission is revoked");
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
            return false;
        }
    }
    else { //permission is automatically granted on sdk<23 upon installation
        Log.v(TAG,"Permission is granted");
        return true;
    }
}

权限结果回调:

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if(grantResults[0]== PackageManager.PERMISSION_GRANTED){
        Log.v(TAG,"Permission: "+permissions[0]+ "was "+grantResults[0]);
        //Create your Directory here
    }
}