2010-12-10 5 views
5

Źródło:Nie można uzyskać niepusty ciąg z PhoneStateListener :: onCallStateChanged

listener = new PhoneStateListener() 
    { 
     @Override 
     public void onCallStateChanged(int state, String incomingNumber) { 
      super.onCallStateChanged(state, incomingNumber); 
      Toast toast = Toast.makeText(getApplicationContext(), incomingNumber, Toast.LENGTH_LONG); 
      toast.show(); 
     } 

    }; 

    ((TelephonyManager)getSystemService(TELEPHONY_SERVICE)).listen(listener , PhoneStateListener.LISTEN_CALL_STATE) 

Cześć,
używam tego kodu, z android.permission.READ_PHONE_STATE zgody, aby otrzymać wiadomość tosty tym liczbę rozpoczął rozmowy. Mój problem polega na tym, że numer przychodzący jest pusty, nie ma znaczenia, czy połączenie jest wychodzące czy przychodzące, pojawia się toast, ale puste.
Widziałem kilka rozwiązań w tym zakresie, ale rozwiązaniem było uzyskanie numeru w zupełnie inny sposób i chcę wiedzieć, czy mój kod może być użyty do moich potrzeb.
Dzięki za porady,
Adam

+0

To pytanie wydaje się być podobne, mam nadzieję, że może ci pomóc: http://stackoverflow.com/questions/4534306/retrieve-the-call-number-in-my-android-app –

+0

http: // stackoverflow. com/questions/4534306/retrieve-the-call-number-in-my-android-app/4534415 # 4534415 – medampudi

Odpowiedz

2

proszę dołączyć pozwolenie do wniosku.

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 


if(state == TelephonyManager.CALL_STATE_RINGING){ 
Toast toast = Toast.makeText(getApplicationContext(), incomingNumber, Toast.LENGTH_LONG); 
toast.show(); 
} 

CALL_STATE_OFFHOOK zwraca wartość null, jeśli jest to pierwsze połączenie. Więc powinieneś użyć CALL_STATE_RINGING.

Mam nadzieję, że to ci pomoże.