Android动态获取权限,多组权限

1 Android单独获取权限

//添加动态权限     让你点击是否允许当前应用是否可以访问你的媒体资源时候

//这段话 的意思   如果读的权限没有授权
if (ContextCompat.checkSelfPermission(this,
        Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
    //就跳到让用户选择是否授权  给个码走返回方法
    ActivityCompat.requestPermissions(this,
            new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1001);
} else {
    //有权限时候,就执行一些方法,例如上传
    widgt();
}
//当我申请权限的时候,调用
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                       @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    //如果用户选择了同意授权     走我的方法
    if (requestCode == 1001) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            widgt();
        } else {
            // Permission Denied
            Toast.makeText(NewpaperAddActivity.this, "Permission Denied  权限拒绝",
                    Toast.LENGTH_SHORT).show();
        }
    }


}

2 多组权限获取

先声明下:

String[] permissions = new String[]{Manifest.permission.CALL_PHONE, Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CAMERA,Manifest.permission.ACCESS_WIFI_STATE};
List<String> mPermissionList = new ArrayList<>();

private static final int PERMISSION_REQUEST = 1;

create的时候调用

//检查权限
checkPermission();
/**
 * 检查权限
 */
private void checkPermission() {
   mPermissionList.clear();
   /**
    * 判断哪些权限未授予
    */
   for (int i = 0; i < permissions.length; i++) {
      if (ContextCompat.checkSelfPermission(this, permissions[i]) != PackageManager.PERMISSION_GRANTED) {
         mPermissionList.add(permissions[i]);
      }
   }
   /**
    * 判断是否为空
    */
   if (mPermissionList.isEmpty()) {//未授予的权限为空,表示都授予了
      //delayEntryPage();
   } else {//请求权限方法
      String[] permissions = mPermissionList.toArray(new String[mPermissionList.size()]);//将List转为数组
      ActivityCompat.requestPermissions(LoginActivity.this, permissions, PERMISSION_REQUEST);
   }
}

/**
 * 响应授权
 * 这里不管用户是否拒绝,都进入首页,不再重复申请权限
 */
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
   super.onRequestPermissionsResult(requestCode, permissions, grantResults);
   switch (requestCode) {
      case PERMISSION_REQUEST:
         //delayEntryPage();
         break;
      default:
         break;
   }
}

猜你喜欢

转载自blog.csdn.net/niuzaiwenjie/article/details/81120304