如何在Android SDK 2.2上检索未接来电

时间:2010-09-24 09:23:51

标签: android notifications telephony

在我的应用程序中,我应该在来电时做一些动作但用户没有回答。

我在 android.telephony NotificationManager 中搜索过,但我还没有找到解决此问题的方法。

有人知道如何知道手机上是否有未接来电?

3 个答案:

答案 0 :(得分:14)

以下是可以查询未接来电的通话记录的代码。基本上,你必须以某种方式触发这一点,并确保你给呼叫记录一些时间(几秒钟应该这样做)来写信息,否则如果你太早检查呼叫记录你将找不到最近的呼叫。

final String[] projection = null;
final String selection = null;
final String[] selectionArgs = null;
final String sortOrder = android.provider.CallLog.Calls.DATE + " DESC";
Cursor cursor = null;
try{
    cursor = context.getContentResolver().query(
            Uri.parse("content://call_log/calls"),
            projection,
            selection,
            selectionArgs,
            sortOrder);
    while (cursor.moveToNext()) { 
        String callLogID = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls._ID));
        String callNumber = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.NUMBER));
        String callDate = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.DATE));
        String callType = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.TYPE));
        String isCallNew = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.NEW));
        if(Integer.parseInt(callType) == MISSED_CALL_TYPE && Integer.parseInt(isCallNew) > 0){
            if (_debug) Log.v("Missed Call Found: " + callNumber);
        }
    }
}catch(Exception ex){
    if (_debug) Log.e("ERROR: " + ex.toString());
}finally{
    cursor.close();
}

我希望你觉得这很有用。

答案 1 :(得分:0)

根据我的理解,您需要查询CallLog提供程序(或者可能是CallLog.Calls),此页面说明了如何查询内容提供程序:http://developer.android.com/guide/topics/providers/content-providers.html#basics

如果你能做到这一点,我很高兴看到代码!

答案 2 :(得分:0)

我想你有内容提供商来访问通话记录。

http://www.anddev.org/video-tut_-_querying_and_displaying_the_calllog-t169.html

http://www.devx.com/wireless/Article/41133

如果此代码有效,您只需要在正确的时间运行此查询。我的意思是检查一些可以在您的设备中接听电话时通知您的样本

http://groups.google.com/group/android-developers/browse_thread/thread/d97a759a3708cbe3

收到此通知后,请输入计时器或使用一些内置的Intent来查找手机恢复正常状态并访问通话记录...

可能重复

broadcast receiver for missed call in android

Show Toast on Missed Call in android application