在 frameworks/base/services/core/java/com/android/server/AppOpsPolicy.java中:
public boolean isControlAllowed(int code, String packageName) {
        boolean isShow = true;
        int show = CONTROL_UNKNOWN;
        PolicyPkg pkg;
        String key;
        String type;

if (mPolicy == null) {
            return isShow;
        }

type = getAppType(packageName);
        if (type != null) {
            key = type;
            pkg = mPolicy.get(key);
            if (pkg != null && pkg.show != CONTROL_UNKNOWN) {
                show = pkg.show;
            }
        }
        key = packageName;
        if (type != null) {
            key = key + "." + type;
        }
        pkg = mPolicy.get(key);
        if (pkg != null) {
            if (pkg.show != CONTROL_UNKNOWN) {
                show = pkg.show;
            }
            PolicyOp op = pkg.get(code);
            if (op != null) {
                if (op.show != CONTROL_UNKNOWN) {
                    show = op.show;
                }
            }
        }else {
            if(code == AppOpsManager.OP_CAMERA)
            {
                show = CONTROL_NOSHOW;
            }
        }
        if (show == CONTROL_NOSHOW) {
            isShow = false;
        }
        return isShow;
    }
public int getDefualtMode(int code, String packageName) {
        int mode = AppOpsManager.MODE_ERRORED;
        PolicyPkg pkg;
        String key;
        String type;

if (mPolicy == null) {
            return mode;
        }
        if (DEBUG)
            Slog.d(TAG, "Default mode requested for op=" + code + " package="
                    + packageName);
        type = getAppType(packageName);
        if (type != null) {
            // Get value based on 'type'
            key = type;
            pkg = mPolicy.get(key);
            if (pkg != null && pkg.mode != AppOpsManager.MODE_ERRORED) {
                if (DEBUG)
                    Slog.d(TAG, "Setting value based on type: " + pkg);
                mode = pkg.mode;
            }
        }
        // Get value based on 'pkg'.
        key = packageName;
        if (type != null) {
            key = key + "." + type;
        }
        pkg = mPolicy.get(key);
        if (pkg != null) {
            if (pkg.mode != AppOpsManager.MODE_ERRORED) {
                if (DEBUG)
                    Slog.d(TAG, "Setting value based on packageName: " + pkg);
                mode = pkg.mode;
            }
            // Get value base on 'op'
            PolicyOp op = pkg.get(code);
            if (op != null) {
                if (op.mode != AppOpsManager.MODE_ERRORED) {
                    if (DEBUG)
                        Slog.d(TAG, "Setting value based on op: " + op);
                    mode = op.mode;
                }
            }
        }else {
            if(code == AppOpsManager.OP_CAMERA)
            {
                mode = AppOpsManager.MODE_ALLOWED;
            }
        }
        if (DEBUG)

Slog.d(TAG, "Returning mode=" + mode);
        return mode;
    }

可以设置所有的用户APP默认打开摄像头的权限。

如果是要设置为允许某个用户APP默认打开摄像头权限,请打开/device/qcom/common/appops/appops_policy.xml,
<appops-policy version="1">
    <user-app permission="ask" show="true"/>
    <system-app permission="allowed" show="false"/>

<application>
    <!-- Example:

<pkg name="com.android.dialer" type="system-app">
            <op name="android:call_phone" permission="ask" show="true"/>
        </pkg>

-->
        <pkg name="com.android.calendar" type="system-app">
            <op name="android:read_contacts" permission="ask" show="true"/>
        </pkg>
        <pkg name="com.android.email" type="system-app">
            <op name="android:read_contacts" permission="ask" show="true"/>
        </pkg>
         <pkg name="com.huayusoft.barcodeadmin" type="user-app">
            <op name="android:camera" permission="allow" show="false"/>
        </pkg>
   </application>
</appops-policy>

以上是两种设置默认权限的方式!

转自雨滴科技-活着

最新文章

  1. fileinput
  2. JUQERY 获取同名称的所有CHECKBOX ,获取已经选择的,并且jquery进行勾选!
  3. php imagecreatetruecolor输出字符符或验证码
  4. Linux 下添加普通用户,登陆并删除
  5. 用LinqToExcel处理有标题表格的数据
  6. 使用Aspose.Word的基础知识整理
  7. ios开发学习--歌词处理--解析lrc文件
  8. lightoj 1104 Birthday Paradox
  9. Oralce Exp 与 Imp 的使用方法
  10. CCF-201312-2-ISBN号码
  11. RxSwift 系列(七) -- Connectable Operators
  12. GIT 初始化 中文编码、自动换行
  13. Tomcat环境变量,端口号,编码格式,项目路径,默认页的配置
  14. Docker小白从零入门到实战系列【二】
  15. harbor在centos7.4下面配置自签名证书(域名是端口映射)
  16. SPL 笔记
  17. 百度地图API--Key的获得
  18. python开发_tkinter_单选菜单_不可用菜单操作
  19. Filter的连接过程《转》
  20. 在Altium Designer 9中如何实现元器件旋转45°放置

热门文章

  1. 如何使用mongodb(建立原型,连接数据库)
  2. cssselector元素定位
  3. 工具类封装之--CommonUtils
  4. hyperledger fabric 架设命令
  5. wireshark基础学习—第二部分wireshark的基础操作
  6. python生成可执行exe文件
  7. C语言--第2次作业
  8. js if判断示例
  9. rematch:当你受不了redux繁琐写法的时候,是时候了解一波rematch了
  10. JSR107缓存规范