2012-01-12 16 views
7

से किसी इरादे को आग लगाने का प्रयास कर रहा है, मैं ContentObserver की onChange() विधि से एक इरादा को आग लगाना चाहता हूं। जब कोई एसएमएस भेजा जाता है, तो मैं चलाने के लिए एक सेवा प्राप्त करने की कोशिश कर रहा हूं, इसलिए 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

क्या कोई कारण है कि आप उदाहरण के निर्माण के दौरान एसएमएसओब्सर्वर में एप्लिकेशन संदर्भ को पास नहीं कर सकते हैं?

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

संबंधित मुद्दे