Android M权限被授予后被拒绝

Android M权限被授予后被拒绝,android,file-permissions,android-6.0-marshmallow,Android,File Permissions,Android 6.0 Marshmallow,在允许权限并重新创建活动后,我收到此错误 I/AppCompatDelegate: The Activity's LayoutInflater already has a Factory installed so we can not install AppCompat's W/EGL_emulation: eglSurfaceAttrib not implemented W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on

在允许权限并重新创建活动后,我收到此错误

I/AppCompatDelegate: The Activity's LayoutInflater already has a Factory installed so we can not install AppCompat's
     W/EGL_emulation: eglSurfaceAttrib not implemented
     W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x9e23f960, error=EGL_SUCCESS
     W/System.err: java.io.IOException: open failed: EACCES (Permission denied)
     W/System.err:     at java.io.File.createNewFile(File.java:939)
     W/System.err:     at java.io.File.createTempFile(File.java:1004)

申请许可的代码是:

     if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ||
                    ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
         ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
     }
崩溃后,当我启动应用程序时,我看不到权限对话框,一切正常,我可以有目的地打开相机。
我正在使用模拟器。Nexus 5 API 23.

如果您将摄像头权限添加到清单中,但用户在运行时未授予该权限,您将注意到捕获照片的外部意图将失败并引发SecurityException


这似乎是安卓M中的一个bug。不过可能只是在模拟器上

这是谷歌开发者论坛上的一个问题。

业主说:

由于emulator 6.0中仍然存在该问题,因此重新打开该问题,但 在MRA58K设备上工作良好


我还在emulator上看到这个错误。

这个错误与Android权限无关。这似乎是一个与文件系统相关的问题
java.io.IOException:open failed:EACCES(权限被拒绝)
。可能,但下次我尝试时,在授予权限后,它工作正常。这是一个众所周知的错误。只有在关闭并再次打开应用程序后,才能授予写入外部存储和读取外部存储的权限。该漏洞在2019年android 10模拟器上仍然存在
     if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ||
                    ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
         ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
     }