Android拨打电话工具类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huangliniqng/article/details/83536774

欢迎关注技术公众号,微信号搜索ColorfulCode 代码男人

分享技术文章,投稿分享,不限技术种类,不限技术深度,让更多人因为分享而受益。

动态权限框架使用的Acp,封装拨打电话两种常用模式,代码如下:

public class CallPhoneUtils {

    private static Context mContext;
    private static volatile CallPhoneUtils callPhone;

    private CallPhoneUtils() {
    }

    public static CallPhoneUtils getInstance(Context context) {

        mContext = context;
        if (callPhone == null) {
            synchronized (CallPhoneUtils.class) {
                if (callPhone == null) {
                    callPhone = new CallPhoneUtils();
                }
            }
        }
        return callPhone;
    }

    /**
     * 跳转到拨号页面 用户手动点击拨打
     *
     * @param phoneNum
     */
    public void diallPhone(final String phoneNum) {
        if (!TextUtils.isEmpty(phoneNum)) {
            Acp.getInstance(mContext).request(new AcpOptions.Builder().setPermissions(Manifest.permission.CALL_PHONE)
                            .setDeniedMessage("拨打电话权限已关闭,如需开启,请点击\"立即开启\"")
                            .setDeniedSettingBtn("立即开启")
                            .setDeniedCloseBtn("关闭")
                            .setRationalBtn("确定")
                            .setRationalMessage("使用此功能需要拨打电话权限!")
                            .build(),
                    new AcpListener() {
                        @Override
                        public void onGranted() {
                            startCall(phoneNum);
                        }

                        @Override
                        public void onDenied(List<String> permissions) {

                        }
                    });
        } else {
            ToastUtil.shortShow(mContext.getString(R.string.haomaweikong));
        }


    }

    /**
     * 拨打电话直接拨打 不跳转拨号界面
     *
     * @param phoneNum
     */
    public void callPhone(final String phoneNum) {

        if (!TextUtils.isEmpty(phoneNum)) {
            Acp.getInstance(mContext).request(new AcpOptions.Builder().setPermissions(Manifest.permission.CALL_PHONE)
                            .setDeniedMessage("拨打电话权限已关闭,如需开启,请点击\"立即开启\"")
                            .setDeniedSettingBtn("立即开启")
                            .setDeniedCloseBtn("关闭")
                            .setRationalBtn("确定")
                            .setRationalMessage("使用此功能需要拨打电话权限!")
                            .build(),
                    new AcpListener() {
                        @Override
                        public void onGranted() {
                            startCall(phoneNum);
                        }

                        @Override
                        public void onDenied(List<String> permissions) {

                        }
                    });
        }

    }

    /**
     * 开启拨打电话
     *
     * @param phoneNumber
     */
    public void startCall(String phoneNumber) {
        Intent intent = new Intent(Intent.ACTION_DIAL);
        Uri data = Uri.parse("tel:" + phoneNumber);
        intent.setData(data);
        mContext.startActivity(intent);
    }

猜你喜欢

转载自blog.csdn.net/huangliniqng/article/details/83536774