2011-12-22 4 views
1

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

+1

Использование каких инструментов? Какой телефон? Какой язык? Это не работает, чтобы начать вопрос, куда бы вы ни положили иглу. –

+0

И что именно вы пробовали? И как это не сработало? – ArjunShankar

+0

Я разработал приложение адресной книги для Android и хочу синхронизировать входящий и исходящий номер отдельно на сервере. – monika

ответ

0

Вы можете иметь класс продлить 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), чтобы быть уверенным, что информация записывается в журнал!

+0

спасибо .. но я могу это сделать во время вызова. Запись начинается немедленно в журнале вызовов, когда инициируется вызов. – monika

+0

Нет, это не так. Запись войдет в журнал после завершения вызова (через несколько секунд после этого). – karcsi

Смежные вопросы