You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android M系统调用相机失败求助:配置权限后仍无法打开相机

Android M系统调用相机权限拒绝问题解决方案

别慌,你这个问题在Android 6.0(M)系统里太常见了——因为从这个版本开始,Android引入了动态权限申请机制,光在Manifest里加权限配置根本不够,必须在运行时主动向用户要权限才行!我给你一步步拆解解决方案:

1. 先确认Manifest里的权限配置

首先确保你已经在AndroidManifest.xml中添加了相机相关权限:

<!-- 相机权限 -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 声明需要相机硬件特性 -->
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

2. 在代码中添加动态权限检查与申请逻辑

在你的TambahLaporActivity里,修改相机按钮的点击事件,先检查权限再启动相机:

// 假设这是你相机按钮的点击事件方法
public void onCameraButtonClick(View view) {
    // 检查是否已获得相机权限
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
        // 未授权,向用户申请相机权限
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA);
    } else {
        // 已授权,直接启动相机
        startCamera();
    }
}

// 封装启动相机的逻辑
private void startCamera() {
    Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    // 先判断是否有相机应用能处理这个Intent,避免崩溃
    if (cameraIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(cameraIntent, REQUEST_CAMERA);
    } else {
        Toast.makeText(this, "设备未安装相机应用", Toast.LENGTH_SHORT).show();
    }
}

3. 处理权限申请的回调结果

重写onRequestPermissionsResult方法,根据用户的授权结果做对应处理:

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    // 判断是否是相机权限的申请回调
    if (requestCode == REQUEST_CAMERA) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            // 用户同意授权,启动相机
            startCamera();
        } else {
            // 用户拒绝授权,提示用户需要权限才能使用相机
            Toast.makeText(this, "需要相机权限才能完成拍照操作", Toast.LENGTH_SHORT).show();
        }
    }
}

额外提醒

如果你的需求是拍摄照片后保存到外部存储,还需要申请WRITE_EXTERNAL_STORAGE权限(同样需要动态申请),别忘了在Manifest里也加上对应的配置哦!

内容的提问来源于stack exchange,提问作者Qube

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:30:11