唤醒后相机退出并提示open camera error id =0

错误log如下

05-13 09:22:38.192 W/System.err( 4471): android.hardware.camera2.CameraAccessException: CAMERA_DISABLED (1): connectHelper:1735: Camera "0" disabled by policy
05-13 09:22:38.192 W/System.err( 4471):  at android.hardware.camera2.CameraManager.throwAsPublicException(CameraManager.java:1012)
05-13 09:22:38.193 W/System.err( 4471):  at android.hardware.camera2.CameraManager.openCameraDeviceUserAsync(CameraManager.java:547)
05-13 09:22:38.193 W/System.err( 4471):  at android.hardware.camera2.CameraManager.openCameraForUid(CameraManager.java:728)
05-13 09:22:38.194 W/System.err( 4471):  at android.hardware.camera2.CameraManager.openCamera(CameraManager.java:656)
05-13 09:22:38.194 W/System.err( 4471):  at com.android.camera.CaptureModule.openCamera(CaptureModule.java:4199)
05-13 09:22:38.194 W/System.err( 4471):  at com.android.camera.CaptureModule.access$11600(CaptureModule.java:158)
05-13 09:22:38.195 W/System.err( 4471):  at com.android.camera.CaptureModule$MyCameraHandler.handleMessage(CaptureModule.java:8502)
05-13 09:22:38.195 W/System.err( 4471):  at android.os.Handler.dispatchMessage(Handler.java:106)
05-13 09:22:38.195 W/System.err( 4471):  at android.os.Looper.loop(Looper.java:223)
05-13 09:22:38.195 W/System.err( 4471):  at android.os.HandlerThread.run(HandlerThread.java:67)
diff --git a/frameworks/base/services/core/java/com/android/server/appop/AppOpsService.java b/frameworks/base/services/core/java/com/android/server/appop/AppOpsService.java
old mode 100644
new mode 100755
index 6eab022..7a9e035
--- a/frameworks/base/services/core/java/com/android/server/appop/AppOpsService.java
+++ b/frameworks/base/services/core/java/com/android/server/appop/AppOpsService.java
@@ -257,7 +257,9 @@ public class AppOpsService extends IAppOpsService.Stub {
     final AtomicFile mFile;
     private final @Nullable File mNoteOpCallerStacktracesFile;
     final Handler mHandler;
-
+    //<!--jicong.wang modify for bug 21737,set app Capability if need
+    private final static String CAPABILITIES_FULL_PKGS = "org.codeaurora.snapcam;";
+    //jicong.wang modify for bug 21737,set app Capability if need-->
     /** Pool for {@link OpEventProxyInfoPool} to avoid to constantly reallocate new objects */
     @GuardedBy("this")
     private final OpEventProxyInfoPool mOpEventProxyInfoPool = new OpEventProxyInfoPool();
@@ -1812,7 +1814,22 @@ public class AppOpsService extends IAppOpsService.Stub {
             updatePendingStateIfNeededLocked(mUidStates.get(uid));
         }
     }
-
+    //<!--jicong.wang modify for bug21737,set app Capability if need
+    /**
+     *  set full Capability
+     * @param uidState
+     */
+    private void setCapabilityIfneed(UidState uidState){
+        if (uidState.pkgOps != null) {
+            ArrayMap<String, Ops> pkgOpss = uidState.pkgOps;
+            for (int i = 0; i < pkgOpss.size(); i++) {
+                if (CAPABILITIES_FULL_PKGS.contains(pkgOpss.valueAt(i).packageName)) {
+                    uidState.pendingCapability = PROCESS_CAPABILITY_FOREGROUND_LOCATION | PROCESS_CAPABILITY_FOREGROUND_CAMERA | PROCESS_CAPABILITY_FOREGROUND_MICROPHONE;
+                }
+            }
+        }
+    }
+    //jicong.wang modify for bug21737,set app Capability if need-->
     public void updateUidProcState(int uid, int procState,
             @ActivityManager.ProcessCapability int capability) {
         synchronized (this) {
@@ -1823,6 +1840,9 @@ public class AppOpsService extends IAppOpsService.Stub {
                 final int oldPendingState = uidState.pendingState;
                 uidState.pendingState = newState;
                 uidState.pendingCapability = capability;
+                //<!--jicong.wang modify for bug 21737,set app Capability if need
+                setCapabilityIfneed(uidState);
+                //jicong.wang modify for bug 21737,set app Capability if need-->
                 if (newState < uidState.state
                         || (newState <= UID_STATE_MAX_LAST_NON_RESTRICTED
                                 && uidState.state > UID_STATE_MAX_LAST_NON_RESTRICTED)) {
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值