2012-01-12 14 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

注意して、アプリケーションコンテキストとアクティビティコンテキストを渡さないでください! – espinchi

関連する問題