Android撥打電話工具類
阿新 • • 發佈:2018-11-14
歡迎關注技術公眾號,微訊號搜尋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); }