开发者

How to retrieve missed calls on Android SDK 2.2

in my app I should do some action when a call comes but not answered by the user.

I have searched in the android.telephony and the NotificationManager, but I haven't found a met开发者_JS百科hod to solve this problem.

Does someone have an idea of how to get to know if there is a missed call on the phone or not ?


Here is code that can query the call log for a missed call. Basically, you will have to trigger this somehow and make sure that you give the call log some time ( a few seconds should do it) to write the information otherwise if you check the call log too soon you will not find the most recent call.

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();
}

I hope you find this useful.


From what I understand, you need to query the CallLog provider (or maybe CallLog.Calls), and this page explains how to query content provider: http://developer.android.com/guide/topics/providers/content-providers.html#basics

I'd be happy to see the code if you can make this work !


I suppose you have content providers to access call logs.

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

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

If this code works you just need to run this query at the right time. I mean check some samples that can notify you when you get a call in your device

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

Once you get this notification put a timer or use some built in Intents to find that the phone is back to normal state and access the call logs...

Possible duplicate

broadcast receiver for missed call in android

Show Toast on Missed Call in android application

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜