1. 程式人生 > >Android撥打電話工具類

Android撥打電話工具類

 

歡迎關注技術公眾號,微訊號搜尋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);
    }