Как восстановить пропущенные звонки на Android SDK 2.2 - PullRequest
7 голосов
/ 24 сентября 2010

в моем приложении я должен сделать какое-то действие, когда звонок приходит, но пользователь не отвечает.

Я искал в android.telephony и NotificationManager , но я не нашел способа решить эту проблему.у кого-то есть идея, как узнать, есть ли пропущенный звонок по телефону или нет?

Ответы [ 3 ]

14 голосов
/ 25 августа 2011

Вот код, который может запросить журнал вызовов о пропущенном вызове.По сути, вам придется как-то инициировать это и убедиться, что вы даете некоторое время журнал вызовов (это должно сделать несколько секунд), чтобы записать информацию, иначе, если вы слишком быстро проверите журнал вызовов, вы не найдете самый последний вызов.

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

Надеюсь, вы найдете это полезным.

0 голосов
/ 24 сентября 2010

Я полагаю, у вас есть контент-провайдеры для доступа к журналам вызовов.

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

Как только вы получите это уведомление, установите таймер или используйте некоторые встроенные Intents, чтобы найти, чтотелефон вернулся в нормальное состояние и доступ к журналам вызовов ...

Возможен дубликат

широковещательный приемник для пропущенного вызова в Android

Показать тост при пропущенном звонке в приложении для Android

0 голосов
/ 24 сентября 2010

Насколько я понимаю, вам нужно запросить поставщика CallLog (или, возможно, CallLog.Calls), и на этой странице объясняется, как запросить поставщика содержимого: http://developer.android.com/guide/topics/providers/content-providers.html#basics

I 'Буду рад видеть код, если вы можете сделать эту работу!

...