创建新文件时,出现上述错误。此代码适用于 Android 4.4 版本。我正在 6.0.1 设备上进行测试并收到此错误。我在 list 文件中有写入权限,在创建文件之前尝试 mkDirs() ,仍然是同样的问题。这是代码 fragment :
File newFile = new File(localFilePath);
try {
String abc = null;
abc = Environment.getExternalStorageState();
if(!newFile.exists()) {
newFile.mkdirs();
newFile.createNewFile();
}
} catch (IOException e1) {
e1.printStackTrace();
return false;
}
externalStoragState 返回为“已安装”。存储位置为/storage/emulated/0/teSTLocation/filename..
最佳答案
您必须授予 6.0 的运行时权限
private static final int MY_PERMISSIONS_REQUEST_STORAGE = 1;
private String[] storage_permissions =
{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
};
if ((int) Build.VERSION.SDK_INT >= 23) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE) && ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE) && ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this);
builder.setMessage("To get storage access you have to allow us access to your sd card content.");
builder.setTitle("Storage");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ActivityCompat.requestPermissions(OmniSalesHubDrawerActivity.this, storage_permissions, 0);
onContactsClick();
}
});
builder.show();
} else {
ActivityCompat.requestPermissions(this, storage_permissions, 0);
onContactsClick();
}
} else {
ActivityCompat.requestPermissions(DrawerActivity.this,
storage_permissions,
MY_PERMISSIONS_REQUEST_STORAGE);
onContactsClick();
}
}
}
关于android 6 - 打开失败 : ENOENT (No such file or directory),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38832929/