我想在一次未接来电时开始活动。但是我无法从通话记录中读取最新的未接来电条目,而是在当前条目之前读取条目。我在电话状态闲置时读它。
示例:假设有两个未接来电条目,一个在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()); }
答案 0 :(得分:0)
您需要使用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!");
}
答案 1 :(得分:0)
你可以这样使用。
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
}
您可以尝试它可能对您有所帮助。