zoukankan      html  css  js  c++  java
  • 运行程序申请危险权限

    Android6.0之后为了增加软件应用程序的安全性,在软件申请有关危险权限的时候,需要在软件运行危险权限的时候需要获取用户赋予权限,以下是九种危险权限,都需要获取用户赋予。

    先要判断是否拥有权限,如果没有就向用户申请获取权限,一次同意,终身免过,拒绝一次,下次触发还要坚持不懈继续申请。调用ContextCompat.checkSelfPermission()方法与PackageManager.PERMISSION_GRANTED  相比较,checkSelfPermission(Context,permission)有两个参数,第一个是上下文,第二个就是具体的权限名字。如果没有权限则会调用ActivityCompat的requestpermission(Context,String[],int requestCode),三个参数,第一上下文,第二String组的权限名字,第三一个请求码,我们这里传入1.

      if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED ){
                            ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CALL_PHONE},1);
                        }else {
                            //执行获取权限之后的操作
                        }

    用户无论给我们权限还是不给权限,都会调用onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)方法,而且用户不给权限每次进程序还是会询问给不给权限,不给就失败。然后完成获取权限的操作。然后完成击杀用户,拿下一血。

      @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
            switch (requestCode){
                case 1:
                    if (grantResults.length>0 && grantResults[0] == getPackageManager().PERMISSION_GRANTED) {
                        //申请成功的操作
                    } else {
                        Toast.makeText(this, "呼叫失败", Toast.LENGTH_SHORT).show();
                    }
                    break;
                default:
                    break;
            }
        }

     

  • 相关阅读:
    开启mysql远程登录
    InfluxDB安装及配置
    基于ssh反向代理实现的远程协助
    小工具之进程守护器
    生成freeswitch事件的几种方式
    freeswitch模块之event_socket
    freeswitch对接其它SIP设备
    freeswitch注册过程分析
    redis参考文档
    创建型模式之Builder模式及实现
  • 原文地址:https://www.cnblogs.com/zhoushenglei/p/7161289.html
Copyright © 2011-2022 走看看