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工具类的主要内容,如果未能解决你的问题,请参考以下文章