【问题标题】:how to detect if incomming miss calls are read如何检测是否读取了未接来电
【发布时间】:2013-05-14 10:58:00
【问题描述】:

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

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

是否有广播接收器或在读取未接电话时通知我的东西?

【问题讨论】:

    标签: android broadcastreceiver android-broadcast phone-call


    【解决方案1】:

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

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

    希望对你有所帮助。

    【讨论】:

    • 感谢您的转发。那么唯一的方法是调用检测未接和未读呼叫的方法吗?难道没有别的办法了吗?你能给我一个最好的例子(代码)吗?
    • 如果你只想在活动中显示,那么我认为你必须在 onResume() 中填充光标,所以如果你通过按主页按钮离开应用程序,并且如果代码在 onResume() 中返回,那么它将刷新光标。
    • 我确实更改了 onResume() 方法,但是我没有离开应用程序并且有人打电话,而且我有一个新的未接来电并且我的活动仍在屏幕上。
    • 你能帮忙吗/如果我有未接来电时活动屏幕仍然打开,则没有变化
    猜你喜欢
    • 1970-01-01
    • 2014-06-09
    • 2010-09-20
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2012-06-27
    相关资源
    最近更新 更多