2015-06-04 2 views
-1

В моем приложении я делаю то, что, когда вызов отключен вызывающим или приемником, должно появиться одно диалоговое окно с номером мобильного телефона. Все работает нормально, но проблема вызывает диалог с предупреждением, когда я получаю звонок, но я только хочу только после разъединения, я не знаю, что такое ошибка, которую я делаю, это мой код. Может ли кто-нибудь помочь?Как получить диалоговое окно предупреждения только после отключения вызова?

 public class MyCallReceiver extends BroadcastReceiver { 

private String incomingNumber; 

@Override 
public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 
    if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_IDLE)) { 
     // This code will execute when the phone has an incoming call 

     // get the phone number 

     incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 
     Intent i = new Intent(context, Disp_Alert_dialog.class); 
     i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     i.putExtra("Number", incomingNumber); 
     context.startActivity(i); 
     Toast.makeText(context, "Call from:" +incomingNumber, Toast.LENGTH_LONG).show(); 


     /* String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 
     Toast.makeText(context, "Call from:" +incomingNumber, Toast.LENGTH_LONG).show();*/ 

    } else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
      TelephonyManager.EXTRA_STATE_IDLE) 
      || intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
        TelephonyManager.EXTRA_STATE_OFFHOOK)) { 
     // This code will execute when the call is disconnected 



    } 
} 
+0

Вы должны начать свою деятельность в 'else..if' состоянии, потому что действие выполнить, если телефон отключен. – Piyush

+0

@PiyushGupta извините, что я не понимаю, что вы ... для моего плохого английского – Aditya

+0

Это будет «Intent i = new Intent (context, Disp_Alert_dialog.class); i.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK); i.putExtra ("Number", incomingNumber); context.startActivity (i); 'in' else..if'. – Piyush

ответ

1

Вы написали код не в том месте. Этот код

Intent i = new Intent(context, Disp_Alert_dialog.class); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
i.putExtra("Number", incomingNumber); 
context.startActivity(i); 

будет в состоянии else..if вместо if состояния.

+0

Вам нужно написать это и в другом случае, если условие. – Piyush

+0

принимайте и проголосуйте .. спасибо – Aditya

+0

Рад помочь вам! – Piyush

1

Вы ошибаетесь. При использовании другого блока

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

Он будет работать всякий раз, когда состояние вызова изменения «Идеал» или «снятие трубки» (в исходящем вызове - при наборе и разъединение вызова, в входящем вызове - когда вызов подхватывается и вызов отключен).

Если вы хотите, чтобы показать диалог только при отсоединении вызова используйте

if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_IDEAL) 

и писать код, если блок

Что касается количества, то вы можете не получить номер таким образом, как это справедливо только для звона государство. Работа вокруг будет использовать ContentObserver в CallLog. Его onChange() будет вызываться всякий раз, когда происходит изменение журнала вызовов. Затем вы можете взять номер из журнала вызовов. Но для этого вам понадобится часть вашего приложения. Использовать в Service может быть.

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

This may help you in using content observer

+0

номер не появляется..изменим отредактированный ответ – Aditya

+0

и откроется диалоговое окно предупреждения, когда я делаю call.not only disconnect call – Aditya

+0

Что вы делаете для своего ресивера. –

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