代码判断是否那个系统拨号的界面显示(也就是正在拨号),是的话,用代码挂断它,就相当于按了那个红色的取消键。查了半天资料也没有搞定,有朋友解决过这个问题吗?
------解决方案--------------------
http://stackoverflow.com/questions/15481524/how-to-programatically-answer-end-a-call-in-android-4-1
------解决方案--------------------
http://android163.diandian.com/post/2011-03-18/2599723
------解决方案--------------------
1楼正解哦

------解决方案--------------------
android没有提供直接的挂断电话的API,要用代码直接挂断电话,必须先导入两个aidl包:
android.telephony和com.android.internal.telephony,然后可按如下代码,进行挂断电话:
TelephonyManager telephone = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
PhoneStateListener listener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String number) {
if("关闭".equals(check)){
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
break;
case TelephonyManager.CALL_STATE_RINGING:
break;
}
}else{
if ("静音".equals(phone)) {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
break;
case TelephonyManager.CALL_STATE_RINGING:
break;
}
}else if ("和谐模式".equals(phone)) {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
break;
case TelephonyManager.CALL_STATE_RINGING:
try {
Method method = Class.forName(
"android.os.ServiceManager").getMethod(
"getService", String.class);
IBinder binder = (IBinder) method.invoke(null,
new Object[] { TELEPHONY_SERVICE });
ITelephony telephony = ITelephony.Stub
.asInterface(binder);
telephony.endCall();
} catch (Exception e) {
e.printStackTrace();
}
break;
}
}else{
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
break;
case TelephonyManager.CALL_STATE_RINGING:
try {
Method method = Class.forName(
"android.os.ServiceManager").getMethod(
"getService", String.class);
IBinder binder = (IBinder) method.invoke(null,
new Object[] { TELEPHONY_SERVICE });
ITelephony telephony = ITelephony.Stub
.asInterface(binder);
telephony.endCall();
} catch (Exception e) {
e.printStackTrace();
}
listNum = (List<PersonNumber>) dbHelper
.findAllNumber(PersonNumber.TABLENAME);
for (int i = 0; i < listNum.size(); i++) {
if (listNum.get(i).getNumber().equals(number)) {
String time = sdf.format(new Date());
blackNumber = new PhoneBlackNumber(listNum
.get(i).getNumber(), "未知", time);
dbHelper.insertPersonNumber(blackNumber);
Intent intt = new Intent();
intt.setAction(PhoneReceiver.PHONE_RECEIVER_ACTION);
sendBroadcast(intt);
}
}
break;
}
}
}
super.onCallStateChanged(state, number);
}
};
telephone.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);