权限

2020-03-20  本文已影响0人  HOLLE_karry

Android中常见的权限

普通权限:不需要获取动态权限

危险权限:日历 相机 联系人 位置 麦克风 电话 传感器 短信 存储

image

权限的使用步骤:

1.检查权限

 判断所有权限是否授权,若授权,直接运行,若没有授权,执行第二步
privatebooleanisAllPermissionGranted() {
booleanisAllGranted=true;
for(inti=0;i<mPermissions.length;i++) {
    if(ActivityCompat.checkSelfPermission(this,mPermissions[i])!=PackageManager.PERMISSION_GRANTED) {
        isAllGranted=false;
    break;
     }
}
returnisAllGranted;
}

2.申请权限

if(ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.CALL_PHONE)){
//已经拒绝过一次,会有一个不再提示的选项框
newAlertDialog.Builder(this)
.setTitle("权限申请").setMessage("提供了解释需要该权限的机会")
.setPositiveButton("OK",newDialogInterface.OnClickListener() {
@Override
publicvoidonClick(DialogInterfacedialog,intwhich) {
requestPermission();
                }
      })
.setNegativeButton("Cancel",null).create().show();
}else{
requestPermission();
 }

3.处理申请结果,回调方法onRequestPermissionsResult()

打电话

PermissionsUtil.requestPermission(MainActivity.this, new PermissionListener() {
         @Override
         public void permissionGranted(@NonNull String[] permission) {
         Toast.makeText(MainActivity.this, "已授权", Toast.LENGTH_SHORT).show();
         callPhone();
         }
         @Override
         public void permissionDenied(@NonNull String[] permission) {
         Toast.makeText(MainActivity.this, "未授权", Toast.LENGTH_SHORT).show();
         }
}, Manifest.permission.CALL_PHONE);

private void callPhone() {
        Intent intent = new Intent(Intent.ACTION_DIAL);
        intent.setData(Uri.parse("tel:110"));
        startActivity(intent);
    }

相册

//点击事件
iv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(intent,1);
            }
        });
@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode==1&&resultCode==RESULT_OK){
            Uri data1 = data.getData();
            iv.setImageURI(data1);
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读