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...
codice:
....
// 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){}
il resto avviene poi gestendo la notifica che lancio con
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.