Android-CallUtil工具类

Posted 刘德利_Android

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android-CallUtil工具类相关的知识,希望对你有一定的参考价值。

打电话相关的工具类:

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);
        
    

以上是关于Android-CallUtil工具类的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Utils 全网最齐全的工具类

Java工具类怎么记

字符串工具类数组工具类集合工具类转型操作工具类编码与解码操作工具类

FlutterUtils 工具库

java 啥叫工具类

BeanUtil 好用的工具类