Ciao a tutti,
ho sviluppato un'applicazione che mi tiene traccia delle chiamate entranti e uscenti...
Il tutto funziona con un servizio sempre attivo su cui ascolto il phonstate.
Tutto funziona piuttosto bene, ma una chiamata ogni tanto (tipo ogni 20) senza che sia riuscito ad identificarne una tipologia precisa, non mi passa il numero del chiamante ( o meglio mi passa stringa vuota ).
di seguito il codice che uso...
il resto avviene poi gestendo la notifica che lancio concodice:.... // la stringa telefono viene inizializzata a "numero nascosto"; try{ TelephonyManager telephonyManager=(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); PhoneStateListener listener; listener = new PhoneStateListener() { int statoprecedente=TelephonyManager.CALL_STATE_IDLE; @Override public void onCallStateChanged(int state, String incomingNumber) { switch (state) { case TelephonyManager.CALL_STATE_IDLE: if (statoprecedente==TelephonyManager.CALL_STATE_OFFHOOK){ notificatelefonata("telefonata con:"+telefono,numeronotifica); numeronotifica++; } statoprecedente=TelephonyManager.CALL_STATE_IDLE; break; case TelephonyManager.CALL_STATE_OFFHOOK: statoprecedente=TelephonyManager.CALL_STATE_OFFHOOK; break; case TelephonyManager.CALL_STATE_RINGING: if (!(incomingNumber==null)){ telefono = incomingNumber;} else {telefono = "numero nascosto";} statoprecedente=TelephonyManager.CALL_STATE_RINGING; break; } } }; telephonyManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE); }catch(Exception ie){}
notificatelefonata("telefonata con:"+telefono,numeronotifica);
C'è qualcosa che non va?
Qualcosa sicuramente mette a "" la stringa telefono, il chè mi fa pensare che l'incomingnumber sia proprio "", ma questo avviene su telefonate su cui il cellulare mi mostra tranquillamente il numero del chiamante durante la chiamata.
Grazie per qualsiasi aiuto.

LinkBack URL
About LinkBacks
Rispondi quotando
