在接到未接来电后开始一项活动。但我无法从通话记录中读取最新的未接来电条目,而是在当前未接来电之前读取该条目。 我在电话状态空闲时读取它。
示例:假设有两个未接来电条目,一个在 11:10,另一个在 11:11。我在 12:12 接到未接来电,我的活动需要显示在 12:12、11:11、11:10 获得的未接来电。而是读11:11,11:10。缺少最新条目。我该怎么办?我正在使用服务并阅读通话记录,电话状态。
Cursor c = getContentResolver().query(allCalls, null, null, null, order);
if (c.moveToFirst()) {
do{
// getting number,type,ack etc}
while (c.moveToNext()); }
您需要使用 TelephonyManager 和 PhoneStateListener 侦听它。
此代码将向您展示如何操作:
if(lastStart == TelephonyManager.CALL_STATE_RINGING)
{
long now = System.currentTimeMillis();
long duration = (now-ringStartTime)/1000;
bindService.AddMissCallInfo(ringPhoneNumber, ringStartTime, duration);
Log.i(Constants.Tag,"service add miss call!");
}
代码取自:http://code.google.com/p/android-miss-call/source/browse/trunk/src/com/call/DialPhoneStateListener.java?r=3
你可以这样用。
c=mContext.getContentResolver().query(CallLog.Calls.CONTENT_URI, projection, null, null, CallLog.Calls._ID + " DESC");
if(c.getCount()!=0){
c.moveToFirst();
lastCallnumber = c.getString(0);
lastCallnumber=FormatNumber(lastCallnumber);
String type=c.getString(1);
String duration=c.getString(2);
String name=c.getString(3);
String id=c.getString(4);
System.out.println("CALLLLing:"+lastCallnumber+"Type:"+type+"t id:"+id);
if(type.equals("3")){
//you can get last missedcall here
}
您可以尝试一下可能对您有所帮助。