Autore Topic: Strano comportamento variabili interne ad onCallStateChanged  (Letto 504 volte)

Offline AntonioE.

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Microsoft Windows 7 x64
Strano comportamento variabili interne ad onCallStateChanged
« il: 17 Dicembre 2013, 12:09:49 CET »
0
Salve gente, ho un'applicazione che intercetta le chiamate in uscita, ne fa il parsing per determinati motivi e poi fa partire la chiamata a seconda del profilo rilevato ( classici privati / aziendali da apporre prefissi ecc ecc )
La struttura in grandi linee è la seguente:
1) una classe OutgoingCallReceiver registrata come receiver nel manifest file per catturare le chiamate in uscita, rileva il numero, lo mette come stringa nel content provider e passa la palla alla seconda classe
2) AlertActivity che recupera il numero letto dal content provider, lo mette nella variabile d'istanza ( diciamo "numberDialed") ne fa il parsing e fa partire la chiamata.

Ora ... dal momento che se il numero è di tipo personale il programma appone un determinato prefisso, e dal momento che nel log delle chiamate i numeri voglio farli apparire "puliti" e senza il suddetto prefisso, ho implementato un listener per riconoscere i cambiamenti di stato in questo modo:

Codice: [Seleziona]
private void createPhoneStateListener() {
    listener = new PhoneStateListener() {


        @Override
        public void onCallStateChanged(int state, String incomingNumber) {

            String stateString = "N/A";
            switch (state) {
            case TelephonyManager.CALL_STATE_IDLE:
                stateString = "Idle";


                //do some stuff
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:

                stateString = "Off hook";
                //do some stuff
                break;
            case TelephonyManager.CALL_STATE_RINGING:
                stateString = "Ringing";
                break;

            }

            Log.i("ONCALLSTATECHANGE STRING: ", stateString);

        }
    };

    telMan.listen(listener, PhoneStateListener.LISTEN_NONE);

il problema è che alla prima chiamata tutto funziona come dovrebbe, ma dalla seconda in poi all'interno del listener il numero salvato nella variabile numberDialed rimane sempre e solo il primo fatto, anche se all'esterno di tale listener il valore contenuto sia nel content provider, che nella variabile stessa siano quelli giusti...
Cosa mi sfugge?
Non c'è cattivo più cattivo di un buono che diventa cattivo

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Strano comportamento variabili interne ad onCallStateChanged
« Risposta #1 il: 17 Dicembre 2013, 12:17:25 CET »
0
Cosa mi sfugge?

Vedendo solo questa piccola parte del codice, non mi viene in mente niente.
Ma ammetto di non avere molta familiarità con queste "funzionalità" (quelle sulle chiamate).
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store