Android 如何判断拨打电话对方是否接听

时间:2022-11-10 14:11:26

在开发中会遇到需要判断用户拨打电话,对方是不是接通成功了。

http://blog.csdn.net/soslinken/article/details/46501451

解决方案: 
其实很简单,只需要去系统的call_log表里去查询一下,本次的通话持续时间是否大于0,即可。 
代码如下:

private boolean getCallLogState() {
ContentResolver cr = getContentResolver();
final Cursor cursor = cr.query(CallLog.Calls.CONTENT_URI,
new String[]{CallLog.Calls.NUMBER,CallLog.Calls.TYPE,CallLog.Calls.DURATION},
CallLog.Calls.NUMBER +"=? and "+CallLog.Calls.TYPE +"= ?",
new String[]{mobile.getText().toString(),"CallLog.Calls.TYPE"},null);
while(cursor.moveToNext()){
int durationIndex = cursor.getColumnIndex(CallLog.Calls.DURATION);
long durationTime = cursor.getLong(durationIndex);
if(durationTime > 0){
isLink = true;
} else {
isLink = false;
}
}
return false;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

如果对方没有接听,则持续时间为0,即使听筒中出现忙音或者提示语,这个表中的记录值都为0。

代码中的 CallLog.Calls.TYPE 请自行选择,枚举值如下

CallLog.Calls.TYPE
//来电:1,拨出:2,未接:3
public static final int INCOMING_TYPE = 1;
public static final int OUTGOING_TYPE = 2;
public static final int MISSED_TYPE = 3;