【问题标题】:Attempting to open camera causes my app to crash尝试打开相机会导致我的应用崩溃
【发布时间】:2018-02-16 01:49:47
【问题描述】:

我有一个名为 takeNewPic 的 Button 对象,我想打开相机然后拍照。但是,每次我尝试这样做时,我的应用程序都会崩溃。

 takeNewPic = (Button) findViewById(R.id.ConfigTakeNewPic);
 takeNewPic.setOnClickListener(this);

在我的 onClick 方法中,我调用了 takePicture(),如下所示:

static final int REQUEST_IMAGE_CAPTURE = 1;

private void dispatchTakePictureIntent() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
    }
}

在清单中我有行

 <uses-permission-sdk-23 android:name="android.permission.CAMERA" />
 <uses-permission-sdk-23 android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

但是,我遇到了一个空指针异常,错误为

java.lang.SecurityException: Permission Denial: starting Intent { 
act=android.media.action.IMAGE_CAPTURE 
cmp=com.motorola.cameraone/com.motorola.camera.Camera } from 
ProcessRecord{dffcd00 28714:com.example.bill.hw2/u0a142} (pid=28714, 
uid=10142) with revoked permission android.permission.CAMERA

【问题讨论】:

  • 我知道 StackOverflow 上有非常相似的问题,我尝试按照他们的建议进行操作,但我一直收到错误
  • NPE? java.lang.SecurityException: Permission Denial 怎么样
  • 我尝试按照他们的建议进行操作,那是什么?
  • 对不起,我的意思是@ScaryWombat
  • 需要提供运行时权限,由于Android 6.0引入了新的运行时权限模型,

标签: java android android-studio android-camera


【解决方案1】:

你查过this link吗?

您需要按照上面链接中的说明管理运行时权限。

【讨论】:

  • 我还没有看到那个链接,没有,但是看着它我仍然感到困惑。我可以看到我仍然缺乏打开和使用相机所需的权限,但我不确定上面链接中提供的方法将添加到我的代码中的哪个位置。 “onRequestPermissionResult”没有在他们的代码中的其他地方使用(至少据我所见),我也不确定我会将初始 if 结构放在哪里。我对 Android Studios 很陌生。
  • 您需要在访问相机之前检查这一点。查看google的官方文档developer.android.com/training/permissions/requesting.html#java
【解决方案2】:

您必须向手机本身请求许可。手动转到应用设置并允许应用使用相机或使用此功能:

requestPermissions(permissionReq, RECORD_AUDIO_REQUEST_CODE);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    • 2021-11-19
    相关资源
    最近更新 更多