2012-01-12 17 views
7

Me gustaría disparar una intención del método onChange() de mi ContentObserver. Estoy intentando que se ejecute un servicio cuando se envía un SMS, de ahí el ContentObserver, pero Eclipse me está dando errores porque no puede resolver el "contexto". A continuación está mi código para la clase.Intentando disparar un intento de 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(); 
    } 
    } 
} 

Respuesta

11

¿Hay alguna razón usted no puede simplemente pasar el contexto de aplicación en el SmsObserver cuando se crea la instancia? clase

public class SmsObserver extends ContentObserver { 

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

Invocación:

new SmsObserver(handler, getApplicationContext()) 
+1

Gracias! Esto funciona. –

+4

¡Solo tenga cuidado y pase el contexto de la aplicación y _no_ un contexto de actividad! – espinchi

Cuestiones relacionadas