2013-05-14 63 views
0

我目前使用检测未接来电:如何检测,如果进来的漏接电话被读取

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如果未接电话被读取

是否有广播接收器或者是什么在未读电话被读取时通知我?

回答

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可以再次填充游标。或者,如果您在活动中显示,则在该活动开始时尝试再次填充它。

希望它能帮助你。

+0

谢谢你的接力。所以唯一的方法是重新调用检测未接和未读呼叫的方法?没有其他方法吗?你能给我一个最好的例子(代码)吗? – 2013-05-14 11:27:13

+0

如果你只想在活动中显示,那么我认为你必须在onResume()中填充光标,所以如果你通过按下home按钮离开应用程序,并且当代码在onResume()时返回,那么它将刷新光标。 – Rahil2952 2013-05-14 11:38:41

+0

我确实改变了onResume()方法,但是如果我不离开应用程序和某人打电话,并且我有一个新的未接电话,并且我的活动仍在屏幕上。 – 2013-05-14 11:43:05