2012-01-12 3 views
7

onChange() 방법의 의도를 내 ContentObserver으로 실행하고 싶습니다. SMS가 전송 될 때 서비스를 실행하려고합니다. 따라서 ContentObserver 이겠지만 Eclipse는 "컨텍스트"를 해결할 수 없기 때문에 오류가 발생합니다. 아래 클래스에 대한 내 코드입니다.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(); 
    } 
    } 
} 

답변

11

인스턴스를 만들 때 응용 프로그램 컨텍스트를 SmsObserver로 전달할 수없는 이유가 있습니까?

public class SmsObserver extends ContentObserver { 

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

호출 클래스 :

new SmsObserver(handler, getApplicationContext()) 
+1

감사합니다! 이 작동합니다. –

+4

조심해서 응용 프로그램 컨텍스트와 _not_ 활동 컨텍스트를 전달하십시오! – espinchi

관련 문제