Android6.0 动态获取拨打电话授权

Android 6.0 以后需要拨打电话仅在AndroidManifest 声明权限不能拨出电话,需要在运行时获取授权才能获取权限,以下为解决方法:

在点击触发按钮后,获取判断用户是否授权,如果授权,则拨打电话,否则提示用户进行授权:
AndroiManifest.xml文件的权限声明必不可少

    <uses-permission android:name="android.permission.CALL_PHONE"/>

按钮点击事件触发后检查用户是否授予权限

@Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.call:
                callToPhone();
                break;
        }
private void callToPhone() {
        /**
         *  借助ContextCompat.checkSelfPermission()方法判断是否授予权限,接收两个参数,Context和具体权限名,方法的返回值与
         *  PackageManager.PERMISSION_GRANTED做比较,相等说明已经授权
         */
        if(ContextCompat.checkSelfPermission(Store.this,Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED){
            /**
             * 同样借助ContextCompat.requestPermissions()方法弹出权限申请的对话框
             * 参数为Context,具体权限名,作为返回结果的识别码(自定义)
             */
            ActivityCompat.requestPermissions(Store.this,new String[]{Manifest.permission.CALL_PHONE},1);
        }else{
            //已授权拨打电话
            try{
                Intent intent = new Intent(Intent.ACTION_CALL);
                intent.setData(Uri.parse("tel:"+keyInfo.getShopPhone()));
                startActivity(intent);
            } catch (SecurityException e){
                e.printStackTrace();
            }
        }
    }

效果图:
这里写图片描述

最后实现回掉函数onRequestPermissionsResult()处理用户的操作结果

        /**
         * @param requestCode 前面定义的反馈结果识别码
         * @param permissions
         * @param grantResults 授权结果
         */
        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            switch (requestCode){
                case 1:
                    //授权重新调用callToPhone
                    if (grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED){
                        callToPhone();
                    } else {
                        //不授权提示用户的操作
                        Toast.makeText(this, "您拒绝授权", Toast.LENGTH_SHORT).show();
                    }
                    break;
                default:
            }
        }

到此成功获取授权,其他权限获取授权方式与此类似

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值