java - 为什么应用程序看不到 Camera2API 权限?

标签 java android camera android-camera android-camera-intent

我有一个非常大的问题(

我正在使用 Camera2API 并为其使用标准的 Google 示例。

Mystic就是我用这个方法的时候

private void openCamera(int width, int height) {
    setUpCameraOutputs(width, height);

    configureTransform(width, height);
    CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
    try {
        if (!mCameraOpenCloseLock.tryAcquire(2500, TimeUnit.MILLISECONDS)) {
            throw new RuntimeException("Time out waiting to lock camera opening.");

        }

        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) !=
                PackageManager.PERMISSION_GRANTED) {
            return;
        }

        manager.openCamera(mCameraId, mStateCallback, mBackgroundHandler);


    } catch (CameraAccessException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        throw new RuntimeException("Interrupted while trying to lock camera opening.", e);
    }
}

我用的是Samsung S6 android 6.0

我希望方法 manager.openCamera(mCameraId, mStateCallback, mBackgroundHandler); - 会打开摄像头,但不是这样,代码停止在

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) !=
                PackageManager.PERMISSION_GRANTED) {
            return;
        }

据我了解,这意味着我的 list 不包含权限,但我检查并有适当的权限

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

这是什么意思?

我有这个权限,为什么过不了关?

我尝试在 Meizu MX5 android 5.1 上启动这个应用程序,它打开相机,一切正常...

可能是安卓版本的问题?

我做错了什么?如何检查?

最佳答案

你说你用的是Android 6.0吧?
根据this即使您在 list 中声明了权限,您也必须单独检查每个权限,如果未被授予则请求每个权限。
为此,在:

if (ActivityCompat.checkSelfPermission(this,Manifest.permission.CAMERA) !=
        PackageManager.PERMISSION_GRANTED) {
        return;
}

代替 return ,这样做,

ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.CAMERA},YOUR_INTEGER_CONSTANT_FOR_THE_CALLBACK);

并按照链接页面中的描述实现回调函数,

@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {
        case YOUR_INTEGER_CONSTANT_FOR_THE_CALLBACK: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Log.d(TAG,"Granted");
                // permission was granted, yay! Do the
                // contacts-related task you need to do.

            } else {
                Log.d(TAG,"Denied");
                // permission denied, boo! Disable the
                // functionality that depends on this permission.
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request
    }
}

希望对您有所帮助。

关于java - 为什么应用程序看不到 Camera2API 权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38039353/

相关文章:

java - Android Studio 通知管理器错误

java - 删除元素哦HashSet里面的for

android - 重新打包 boot.img 时出错 (Android)

java - 使用 TiledMap 跟随播放器的 LibGDX 相机?

c++ - 在 OpenGL 中渲染相机前的对象

java - 使用 vector 编辑 JTable

java - 异步 Javascript 加载中的挑战

Android - 制作默认标签但没有任何内容

Android:UPnP 设备扫描器示例

android - 如何在 Android 中查找来自相机的输入 fps