打电话相关的工具类:

public final class CallUtil {

    /**
     * 拨打电话(直接拨打电话)
     * @param phoneNum 电话号码
     */
    @SuppressLint("MissingPermission")
    public static void callPhone(Activity activity, String phoneNum){
        Intent intent = new Intent(Intent.ACTION_CALL);
        Uri data = Uri.parse("tel:" + phoneNum);
        intent.setData(data);
        activity.startActivity(intent);
    }


    /**
     * 拨打电话(跳转到拨号界面,用户手动点击拨打)
     * @param phoneNum 电话号码
     */
    public static void callPhoneToBoard(Activity activity, String phoneNum) {
        Intent intent = new Intent(Intent.ACTION_DIAL);
        Uri data = Uri.parse("tel:" + phoneNum);
        intent.setData(data);
        activity.startActivity(intent);
    }

    /**
     * 针对即使获取了拨打电话的权限依然报错问题的解决方案
     */
    private static final int MY_PERMISSIONS_REQUEST_CALL_PHONE = 1;
    public static void callPermission(Activity activity, String number) {
        // 检查是否获得了权限(Android6.0运行时权限)
        if (ContextCompat.checkSelfPermission(activity, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
            // 没有获得授权,申请授权
            if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.CALL_PHONE)) {
                // 返回值:
                //如果app之前请求过该权限,被用户拒绝, 这个方法就会返回true.
                //如果用户之前拒绝权限的时候勾选了对话框中”Don’t ask again”的选项,那么这个方法会返回false.
                //如果设备策略禁止应用拥有这条权限, 这个方法也返回false.
                // 弹窗需要解释为何需要该权限,再次请求授权
                // Toast.makeText(Your Activity, "请授权!", Toast.LENGTH_LONG).show();
                LogUtil.toastL(activity, "请授权!");
                // 帮跳转到该应用的设置界面,让用户手动授权
                Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                Uri uri = Uri.fromParts("package", activity.getPackageName(), null);
                intent.setData(uri);
                activity.startActivity(intent);
            } else {
                // 不需要解释为何需要该权限,直接请求授权
                ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.CALL_PHONE}, MY_PERMISSIONS_REQUEST_CALL_PHONE);
            }
        } else {
            // 已经获得授权,可以打电话
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_CALL);
            //url:统一资源定位符
            //uri:统一资源标示符(更广)
            intent.setData(Uri.parse("tel:" + number));
            //开启系统拨号器
            activity.startActivity(intent);
        }
    }

}