2012-01-12 10 views
7

Vorrei avviare un intent dal metodo onChange() del mio ContentObserver. Sto cercando di far funzionare un servizio quando viene inviato un SMS, quindi lo ContentObserver, ma Eclipse mi dà errori perché non può risolvere "contesto". Di seguito è riportato il mio codice per la classe.Tentativo di generare un intent da un ContentObserver

public class SmsObserver extends ContentObserver { 

public SmsObserver(Handler handler) { 
    super(handler); 
    // TODO Auto-generated constructor stub 
} 

@Override 
public void onChange(boolean selfChange) { 
    super.onChange(selfChange); 

    // On outgoing SMS, do this 
    Intent update = new Intent(context, UpdateService.class); 
    PendingIntent pendingIntent = PendingIntent.getService(context, 0, update, 0); 

    try { 
     pendingIntent.send(); 
    } catch (CanceledException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    } 
} 

risposta

11

C'è qualche motivo non puoi semplicemente passare il contesto di applicazione nella SmsObserver quando viene creata l'istanza? Classe

public class SmsObserver extends ContentObserver { 

    private Context context; 
    public SmsObserver(Handler handler, Context context) { 
     super(handler); 
     this.context = context; 
    } 
} 

Invocare:

new SmsObserver(handler, getApplicationContext()) 
+1

Grazie! Questo funziona. –

+4

Basta fare attenzione e passare il contesto dell'applicazione e _non_ un contesto di attività! – espinchi

Problemi correlati