Отдельный приемник для входящего звонка - PullRequest
1 голос
/ 22 декабря 2011

Можем ли мы написать отдельный широковещательный приемник для входящих и исходящих вызовов, потому что я хочу выполнить различные действия для входящего и исходящего вызова.Есть ли способ отличить их.Я испробовал все виды методов, но это не сработало.

1 Ответ

0 голосов
/ 22 декабря 2011

У вас может быть класс, расширяющий PhoneStateListener , где вы должны onCallStateChanged метод. Как только состояние телефона изменится на TelephonyManager.CALL_STATE_IDLE , вы можете проанализировать журнал вызовов:

final String[] callsProjection = new String[] { Calls.TYPE, Calls.DURATION, Calls.DATE, Calls.NUMBER };
final Cursor cursor = mContext.getContentResolver().query(Calls.CONTENT_URI, callsProjection, null, null, Calls.DATE + " DESC");

Получив эту информацию, вы можете легко проверить последнюю запись для типа вызова:

    if (cursor.moveToFirst()) {
        final int idType = cursor.getColumnIndex(Calls.TYPE);
        if(t == Calls.INCOMING_TYPE) {            
        } else if (t == Calls.OUTGOING_TYPE) {
        } else { /* missed call */ }
    }
    cursor.close();

ПРИМЕЧАНИЕ: Перед анализом журнала вызовов может потребоваться подождать несколько секунд (3 должно быть достаточно), просто чтобы убедиться, что информация записывается в журнал!

...