请求写入\u外部\u存储权限后,权限被拒绝创建新文件Android Marshmallow

请求写入\u外部\u存储权限后,权限被拒绝创建新文件Android Marshmallow,android,android-permissions,android-6.0-marshmallow,permission-denied,Android,Android Permissions,Android 6.0 Marshmallow,Permission Denied,我的应用程序的目标是SDK 23。我正在尝试拍照,我检查是否获得了读取外部存储和写入外部存储权限。如果它没有这些权限,它将使用以下行请求它们 ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 12); 我使用onRequestPermissionsResult方法

我的应用程序的目标是SDK 23。我正在尝试拍照,我检查是否获得了
读取外部存储
写入外部存储
权限。如果它没有这些权限,它将使用以下行请求它们

ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 12);
我使用
onRequestPermissionsResult
方法回调检查权限是否被接受/允许

如果它被接受,我将使用以下代码创建一个文件

// this code only gets called when permission was accepted by the user
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(imageFileName, ".jpg", storageDir);
奇怪的是,我得到了以下例外

error while creating file
java.io.IOException: open failed: EACCES (Permission denied)
at java.io.File.createNewFile(File.java:939)
at java.io.File.createTempFile(File.java:1004)
当我完全重新启动我的应用程序时,代码执行得很好,没有任何异常。我已经尝试在另一个活动中执行代码。当权限被允许时,它会打开活动,但我仍然得到权限被拒绝的异常


我是否做错了什么,问题可能是模拟器吗?

什么是“完全重新启动应用程序”?因此,在您重新启动一次后,它工作了,但一次又一次地不工作?@Gavriel当我允许/接受权限并调用创建文件的代码时,它会抛出该异常。当我完全关闭应用程序并重新启动它时(权限现在在“设置”中授予),代码工作正常。之后我重新启动它的时候。只有当我请求权限并在授予权限后调用代码时,它才起作用。也许您应该向我们展示有关
onRequestPermissionsResult
的代码,您如何解决@PatrixWilliams的问题