AndroidStudio最近更新到了4.0,在写demo测试的时候发现无论怎么动态申请权限,创建文件夹的时候总是返回false,看了一下源码的相关注释结合网上的资料,好像是说为了用户的隐私还是神马不允许直接在根目录创建文件夹了!
String[] permission = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
int granted = ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (granted != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, permission, 10086);
}
网上的人说只要在oncreate 里面去申请权限就可以!!
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 10086 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
requestPermissions();
}
}
private void requestPermissions() {
Log.i(TAG, "path = : " + SDCardUtils.getAppCachePath());
boolean create = FileUtils.createOrExistsDir(SDCardUtils.getAppCachePath());
Log.i(TAG, "创建文件夹" + create);
}
哎,真是不理解这脑回路啊,我居然还信了。在哪里申请权限不都一样嘛!
正解:
android:requestLegacyExternalStorage="true"
测试了好几遍,都可以正常生成文件夹了。