2012-01-12 14 views
7

Chciałbym wystrzelić intencję z metody onChange() mojego ContentObserver. Próbuję uruchomić usługę, gdy wysyłany jest SMS, stąd ContentObserver, ale Eclipse daje mi błędy, ponieważ nie może rozwiązać "kontekstu". Poniżej znajduje się mój kod dla klasy.Próba wywołania zamiaru z obiektu 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(); 
    } 
    } 
} 

Odpowiedz

11

Czy jest jakiś powód, dla którego nie można po prostu przekazać kontekstu aplikacji do SmsObserver podczas tworzenia instancji? Klasa

public class SmsObserver extends ContentObserver { 

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

Wywoływanie:

new SmsObserver(handler, getApplicationContext()) 
+1

Dzięki! To działa. –

+4

Po prostu zachowaj ostrożność i przekaż kontekst aplikacji i _nie_ kontekst działania! – espinchi

Powiązane problemy