如何检测是否读取了未接来电

时间:2013-05-14 10:58:00

标签: android broadcastreceiver android-broadcast phone-call

我目前正在使用以下方式检测未接来电:

String[] projection = new String[]{CallLog.Calls.NUMBER,
                CallLog.Calls.TYPE,
                CallLog.Calls.DURATION,
                CallLog.Calls.CACHED_NAME,
                CallLog.Calls._ID};

        String where = CallLog.Calls.TYPE+"="+CallLog.Calls.MISSED_TYPE+" AND NEW = 1";                 

Cursor c = context.getContentResolver().query(CallLog.Calls.CONTENT_URI,projection,where, null, null);      c.moveToFirst();            
Log.d("CALL", ""+c.getCount());         
if(c.getCount() > 0) 
// code that displays in a textview the number of missed calls;

使用标记我正在向客户端显示未接来电。

如果读取未接来电

,是否有方法可以将textview值重置为0?

是否有广播接收器或在读取未接来电时通知我的内容?

1 个答案:

答案 0 :(得分:0)

获取有关未接来电的信息。您可以使用以下内容。

 String[] projection = { CallLog.Calls.CACHED_NAME, CallLog.Calls.CACHED_NUMBER_LABEL, CallLog.Calls.TYPE };
 String where = CallLog.Calls.TYPE + "=" + CallLog.Calls.MISSED_TYPE + " AND " + CallLog.Calls.NEW + "=1";         
 Cursor c = this.getContentResolver().query(CallLog.Calls.CONTENT_URI, projection, where, null, null);

在此光标中,您将获得未接来电的所有详细信息。然后你必须再打一次电话来检查是否读了电话。我认为使用TimerTask或使用AlaramManager可以再次填充光标。或者,如果您在活动中显示,则尝试在该活动开始时再次填写。

希望它会对你有所帮助。