1,概述
做开发时,有时完全不利用Dialer.apk来开发拨号等功能,如何拨打/接听/挂断电话呢?电话来了又怎么知道呢?现在分为2个部分一一到来。首先是拨打/接听/挂断等电话操作,然后监听电话的状态,并进行相应的处理,本文基于Android 5.1.
2, 电话操作
2.1 拨号
拨号最简单了,直接发个广播就可以了
private String callnumber = “10086”; // 比如 给移动客服打电话
Uri uri = getCallUri(callnumber); // 将所拨号码进行格式化
Intent intentd = new Intent();
intentd.setAction(Intent.ACTION_CALL);
intentd.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intentd.addFlags(Intent.FLAG_ACTIVITY_NO_USER_ACTION);
intentd.setData(uri);
startActivity(intentd);
public static Uri getCallUri(String number) {
if (number != null && (number.contains("@") || number.contains("%40"))) {
return Uri.fromParts("sip", number, null);
}
return Uri.fromParts("tel", number, null);
}
2.2 挂断
利用反射机制调用telephonyManager的endCall方法进行挂断。
private Object telephonyObject = null;
TelephonyManager telephonyManager =
(TelephonyManager) getSystemService(TELEPHONY_SERVICE);
Class telManager = telephonyManager.getClass();
Method getITelephony = null;
try {
try {
getITelephony = telManager
.getDeclaredMethod("getITelephony");
} catch (NoSuchMe