在AVD上启动相机意图抛出IOException:打开失败:EACCES(权限被拒绝)

时间:2015-10-28 06:02:02

标签: android android-asynctask android-camera

我试图创建一个临时文件来存储来自摄像头意图的图像,遵循Android Photo Basics指南,但每次我尝试从我的Android模拟器创建一个时,它都是崩溃。我的物理Nexus 7工作正常,所以我知道它不是权限问题。

我设置了一个断点然后跟着它,然后它进入了BlockGuardO,经过一些研究后听起来像是一种确保你能够正确控制线程的方法,所以我试图将我的代码移到Person,但它仍然会因同样的错误而崩溃。

我使用的原始方法:

obj

之后我将其移至AsyncTask

private File createImageFile() throws IOException {
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date());
    String imageFileName = "JPEG_" + timeStamp + "_";

    File storageDir = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES);

    File image = File.createTempFile(
            imageFileName,
            ".jpg",
            storageDir
    );

    return image;
}

但我仍然遇到同样的问题。我知道我可以通过更改StrictThread设置来禁用它,但我想了解如何处理主UI线程中的文件IO。

由于

2 个答案:

答案 0 :(得分:0)

To access the device camera, you must declare the CAMERA permission in your Android Manifest. Also be sure to include the <uses-feature> manifest element to declare camera features used by your application. For example, if you use the camera and auto-focus feature, your Manifest should include the following:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

答案 1 :(得分:0)

我认为你没有为你的模拟器定义相机。 如果你正在使用android studio,请执行以下操作:

  

1.开启 AVD经理

     

2.在“操作”列下,选择编辑AVD (钢笔图标)

     

3.单击显示高级设置

     

4.在相机中选择后退相机

     

5.Finish

相关问题