android 动态请求权限

发布时间:2019-02-24 00:02:46

1,定义请求的权限

private String[] permissions = {Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.WRITE_EXTERNAL_STORAGE};


2.验证是否有权限

public void checkPermission(){

   List<String> needPermissions=new ArrayList<String>();

   // 版本判断。当手机系统大于 23 时,才有必要去判断权限是否获取

   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

      for (int i=0;i<permissions.length;i++){

         // 权限是否已经 授权 GRANTED---授权  DINIED---拒绝

         if (ContextCompat.checkSelfPermission(this, permissions[i])!= PackageManager.PERMISSION_GRANTED) {

            needPermissions.add(permissions[i]);

         }

      }

      if(needPermissions.size()>0){

         // 如果没有授予该权限,就去提示用户请求

         showDialogTipUserRequestPermission("授权请求","请接受授权,否则无法正常使用应用",needPermissions);

      }


   }

}


// 提示用户该请求权限的弹出框

public void showDialogTipUserRequestPermission(String title,String message,final List<String> needPermissions) {

   new AlertDialog.Builder(this)

         .setTitle(title)

         .setMessage(message)

         .setPositiveButton("立即开启", new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

               startRequestPermission(needPermissions);

            }

         })

         .setNegativeButton("取消", new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

               finish();

            }

         }).setCancelable(false).show();

}

// 开始提交请求权限

public void startRequestPermission(List<String> needPermissions) {

   String[] array = new String[needPermissions.size()];

   String[] s=needPermissions.toArray(array);

   ActivityCompat.requestPermissions(this, array, 321);

}




Card image cap
APP STORE
Card image cap
应用宝
Card image cap
小米
Card image cap
华为