Android6.0权限

Android危险权限一共9组24个权限

权限组权限名
CALENDARREAD_CALENDAR、WRITE_CALENDAR
CAMERACAMERA
CONTACTSREAD_CONTACTS、WRITE_CONTACTS、GET_ACCOUNTS
LOCATIONACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATION
MICROPHONERECORD_AUDIO
PHONEREAD_PHONE_STATE、CALL_PHONE、READ_CALL_LOG、WRITE_CALL_LOG、ADD_VOICEMAIL、USE_SIP、PROCESS_OUTGOING_CALLS
SENSORSBODY_SENSORS
SMSSEND_SMS、RECEIVE_SMS、READ_SMS、RECEIVE_WAP_PUSH、RECEIVE_MMS
STORAGEREAD_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE

//判断是否有权限
ContextCompat.checkSelfPermission()
//请求权限
ActivityCompat.requestPermissions()
//权限回调
onRequestPermissionsResult()

模拟打电话权限
需要配置
<uses-permission android:name="android.permission.CALL_PHONE"/>
代码如下:


    private Button btn_call_phone;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    private void initView() {
        btn_call_phone = findViewById(R.id.btn_call_phone);
        btn_call_phone.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_call_phone:
                call();
                break;
        }
    }
    //权限处理方法
    private void call() {
        //判断用户是否已经授予了权限
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.
                CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
         //没有授予就向用户申请权限
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE},1);
        } else {
            CallPhone();
        }
    }

    //打电话逻辑
    @SuppressLint("MissingPermission")
    private void CallPhone() {
        Intent intent = new Intent(Intent.ACTION_CALL);
        Uri uri = Uri.parse("tel:" + "10086");
        intent.setData(uri);
        startActivity(intent);
    }
    //申请权限的回调方法
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode){
            case 1:
                if (grantResults[0]==PackageManager.PERMISSION_GRANTED){
                    CallPhone();
                }else {
                    Toast.makeText(this,"权限未被授予",Toast.LENGTH_SHORT).show();
                }
        }
    }
}

第一步利用ContextCompat.checkSelfPermission()方法判断权限是否已经授予了,如果没有就调用ActivityCompat.requestPermissions()方法去授予,如果已经授予了就调用打电话逻辑的方法。
第二步 onRequestPermissionsResult()是权限回调,对应ActivityCompat.requestPermissions()方法,申请权限就会回调这个方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值