让代码更简单

Android获取直接拨打电话运行时权限

重要:本文最后更新于2022-11-08 19:26:06,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

自从Android6.0后,谷歌增加了许多权限验证,以前只需要权限声明的功能再现在要实现就需要在你执行功能时实时获取权限,即运行时权限runtime permission,下面是我用在程序中获取直接拨打电话的权限的代码,来自网友,亲测好用。

Android获取直接拨打电话运行时权限

Android获取直接拨打电话运行时权限

实现代码如下:

复制
/**
 * 申请权限
 */
private void requestPermission()
{
    //判断Android版本是否大于23
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
    {
        int checkCallPhonePermission = ContextCompat.checkSelfPermission(SearchActivity.this, Manifest.permission.CALL_PHONE);

        if (checkCallPhonePermission != PackageManager.PERMISSION_GRANTED)
        {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE},
                    RequestPermissionType.REQUEST_CODE_ASK_CALL_PHONE);
            return;
        }
        else
        {
            callPhone(phone);
        }
    }
    else
    {
        callPhone(phone);
    }
}

/**
 * 注册权限申请回调
 * @param requestCode 申请码
 * @param permissions 申请的权限
 * @param grantResults 结果
 */
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
{
    switch (requestCode)
    {
        case  RequestPermissionType.REQUEST_CODE_ASK_CALL_PHONE:
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
            {
                callPhone(phone);
            }
            else
            {
                // Permission Denied
                Toast.makeText(SearchActivity.this, "CALL_PHONE Denied", Toast.LENGTH_SHORT).show();
            }
            break;
        default:
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
}

/**
 * 拨号方法
 */
private void callPhone(String phone)
{
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_CALL);
    intent.setData(Uri.parse("tel:"+phone));
    startActivity(intent);
}

在需要获取权限时执行requestPermission();申请权限即可,代码会自动判断是否已经获得授权。

 

感觉很棒!可以赞赏支持我哟~

0 打赏

评论 (0)

登录后评论
QQ咨询 邮件咨询 狗哥推荐