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);
}
}
网友评论