2015-09-22 1 views
2

Я получаю входящий звонок Подробнее (Number,Name,Date). Но как получить информацию об исходящих звонках. Я написал код для исходящих вызовов, но он выбрасывает NullPointerException. Ниже мой файл MyCallReceiver .java и файл манифестаКак получить номер исходящего звонка с указанием даты и времени?

public void onReceive(Context context, Intent intent) { 

    this.context = context; 



    if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_RINGING)) { 

     String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 

     Toast.makeText(context, "Call From : " + incomingNumber, Toast.LENGTH_LONG).show(); 

     doToast(getContactName(context, incomingNumber) + " " + incomingNumber); 
     String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date()); 
     doToast(currentDateTimeString +" "+incomingNumber); 


    } else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_IDLE) || intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) { 
     Toast.makeText(context, "DETECTED CALL HANG UP EVENT", Toast.LENGTH_LONG).show(); 

     String outgoingNumber=intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
     Toast.makeText(context,"Calling To :"+outgoingNumber,Toast.LENGTH_LONG).show(); 
    } 
} 
+0

где манифест? – gmetax

+0

<приемник андроида: name = ". MyCallReceiver"><намерение-фильтр><действие android: name = "android.intent.action.PHONE_STATE" />

ответ

1
public void onReceive(Context context, Intent intent) 
{ 
    String state=intent.getStringExtra(TelephonyManager.EXTRA_STATE); 

    if(state==null) 
    { 
     //Outgoing call 
     String number=intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
     Log.i("tag","Outgoing number : "+number); 
    } 
    else if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) 
    { 
     //Incoming call 
     String number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 
     Log.i("tag","Incoming number : "+number); 
    } 
} 
+0

bro ... все в порядке, но как насчет времени? и дата ???, даже им тоже ищет то же самое. Я получаю номер исходящего звонка, но мне нужно точное время исходящего звонка. Помогите мне! –

0

Прежде всего intent.getStringExtra (Intent.EXTRA_PHONE_NUMBER) дает исходящий номер, а телефон находится в режиме ожидания состояние и превращается в «нулевые» в то время как изменения состояния телефона в OFF_HOOK.

Самый простой способ состоял в том, чтобы сохранить номер перед другим onRecive.

+0

Я использовал String исходящийNumber = intent.getStringExtra (Intent.EXTRA_PHONE_NUMBER); in my else if part, но я получаю ошибку –

+0

HariRam, можете ли вы сказать мне, где я должен обновить свой код, чтобы получить номер исходящего вызова –

+0

Im не уверен, удалите условие off_hook. вы можете получить номер телефона. – RAAAAM

-1

Создание отдельных прослушивателей для различных событий (то есть входящих и исходящих вызовов) может облегчить вашу жизнь. Для исходящих вызовов, вместо проверки состояния TelephonyManager, вы можете создать IntentFilter.

IntentFilter filterCalls = new IntentFilter(); 
filterCalls.addAction(Intent.ACTION_NEW_OUTGOING_CALL); 
MyCallReceiver myCallReceiver = new MyCallReceiver(); 
registerReceiver(myCallReceiver, filterCalls); 

Тогда в вашем onReceive вы можете просто:

String outgoingNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER) 

и быть уверенным, что он будет работать.

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

  • Нет связанных вопросов^_^