我的应用针对的是SDK 23.我正在尝试拍照并检查是否获得了READ_EXTERNAL_STORAGE
和WRITE_EXTERNAL_STORAGE
权限。如果它没有这些权限,它将使用以下行请求它们。
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)
当我完全重启我的应用程序时,代码执行正常,没有任何异常。我已经尝试在另一个活动中执行代码。它在允许权限时打开活动,但仍然得到该权限被拒绝例外。
我做错了什么,问题可能是模拟器吗?