我已经阅读了有关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");
但也不知道它没有创建目录。
高级帮助将不胜感激。!
答案 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
}
}