Android pei(9)发生视频通话摄像机许可问题

时间:2019-02-09 15:50:59

标签: java android video-streaming sinch

更新

我正在开发一个需要相机许可的小型应用程序。我可以处理运行时权限,但真正的问题是,当我中继到Sinchpayload并进入来电活动时。此活动应请求权限(相机和其他2个权限)。但是,由于没有安全例外,它没有显示权限对话框,而使我的应用程序崩溃。 仅当我请求相机权限时才会发生这种情况-不会发生其他权限,并且仅在带有相机“ 2” Api的Android 9上运行-Android 8.1及更低版本可以正常使用此问题仍然发生在示例采样推上。权限对话框将显示是否像往常一样启动活动。这是错误:

-------- beginning of crash
2019-02-10 22:11:55.390 2113-2681/com.example.myapp.app E/AndroidRuntime: FATAL EXCEPTION: VideoCapturerThread
   Process: com.example.myapp.app, PID: 2113
   java.lang.SecurityException: validateClientPermissionsLocked:1054: Caller "com.example.myapp.app" (PID 10319, UID 2113) cannot open camera "1" without camera permission
       at android.hardware.camera2.CameraManager.throwAsPublicException(CameraManager.java:747)
       at android.hardware.camera2.CameraManager.openCameraDeviceUserAsync(CameraManager.java:405)
       at android.hardware.camera2.CameraManager.openCameraForUid(CameraManager.java:567)
       at android.hardware.camera2.CameraManager.openCamera(CameraManager.java:495)
       at org.webrtc.Camera2Session.openCamera(Unknown Source:44)
       at org.webrtc.Camera2Session.start(Unknown Source:60)
       at org.webrtc.Camera2Session.<init>(Unknown Source:73)
       at org.webrtc.Camera2Session.create(Unknown Source:17)
       at org.webrtc.Camera2Capturer.createCameraSession(Unknown Source:17)
       at org.webrtc.CameraCapturer$5.run(Unknown Source:52)
       at android.os.Handler.handleCallback(Handler.java:891)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:207)
       at android.os.HandlerThread.run(HandlerThread.java:65)
    Caused by: android.os.ServiceSpecificException: validateClientPermissionsLocked:1054: Caller "com.example.myapp.app" (PID 10319, UID 2113) cannot open camera "1" without camera permission (code 1)
       at android.os.Parcel.createException(Parcel.java:1967)
       at android.os.Parcel.readException(Parcel.java:1921)
       at android.os.Parcel.readException(Parcel.java:1871)
       at android.hardware.ICameraService$Stub$Proxy.connectDevice(ICameraService.java:343)
       at android.hardware.camera2.CameraManager.openCameraDeviceUserAsync(CameraManager.java:369)
       at android.hardware.camera2.CameraManager.openCameraForUid(CameraManager.java:567) 
       at android.hardware.camera2.CameraManager.openCamera(CameraManager.java:495) 
       at org.webrtc.Camera2Session.openCamera(Unknown Source:44) 
       at org.webrtc.Camera2Session.start(Unknown Source:60) 
       at org.webrtc.Camera2Session.<init>(Unknown Source:73) 
       at org.webrtc.Camera2Session.create(Unknown Source:17) 
       at org.webrtc.Camera2Capturer.createCameraSession(Unknown Source:17) 
       at org.webrtc.CameraCapturer$5.run(Unknown Source:52) 
       at android.os.Handler.handleCallback(Handler.java:891) 
       at android.os.Handler.dispatchMessage(Handler.java:102) 
       at android.os.Looper.loop(Looper.java:207) 
       at android.os.HandlerThread.run(HandlerThread.java:65)`

这是我请求权限的代码:

if (Build.VERSION.SDK_INT>=23)
    {
 if (GlobalConstants.isAllPermissionsGrantedBefore_Video_Call(this)==false)
            ActivityCompat.requestPermissions(
                    Video_incomming_call.this,
                   GlobalConstants.mPermissions_Video_Chat,
                    GlobalConstants.VIDEO_RECIEVE_CODE);
        else {
            Start_Calling();
        }

    } else Start_Calling();

1 个答案:

答案 0 :(得分:1)

应用程序权限对话框仅显示在前景中。