2012-09-03 10 views
7

मैंने सेवा से ContentObserver पंजीकृत किया है और मुझे कॉल या संपर्क अपडेट जैसे फ़ोन में अपडेट होने पर onchange() फ़ंक्शन मिलता है। लेकिन मुझे onchange() फ़ंक्शन केवल तभी कॉल किया जाना चाहिए जब जोड़ना, अपडेट करना या हटाना होता है। लेकिन मैं नहीं चाहता कि जब कॉल आने वाली या जावक हो। तो क्या कोई मुझे बता सकता है कि URI मैं contentObserver में पंजीकरण कर सकता हूं? मेरे कोड यहाँ हैमैन्युअल रूप से संपर्क अपडेट के लिए ContentObserver

getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true,new Contact_change()); 

और Contact_change.java वर्ग

तरह
public class Contact_change extends ContentObserver{ 

    public Contact_service() { 
    super(null); 
    } 

    @Override 
    public void onChange(boolean selfChange){ 
    Log.i("contact_service","onchange"); 
    Super.onChange(selfChange); 
    } 

@Override 
public boolean deliverSelfNotifications() { 
    return true; 
    } 

} 

संपादित है:
मैं एक और समस्या यह है कि के बाद सेवा बंद करता है, तो मैं तो यह भी संपर्क में परिवर्तन किया है onchange() फ़ंक्शन कहा जाता है। तो मैं इसे कैसे रोक सकता हूं या contentobserver पंजीकृत कर सकता हूं।

+0

मुझे नहीं लगता यह संभव है है। अंतिम कॉल का समय संपर्क का एक क्षेत्र है, इसलिए इसे बदलना संपर्क – njzk2

+0

बदल रहा है क्या यह संपर्क में बदलाव की अधिसूचना प्राप्त करने के लिए अन्य तरीका है? क्योंकि मैं संपर्कों को अपने आवेदन के साथ सिंक्रनाइज़ करना चाहता हूं। – Nency

+0

मुझे नहीं लगता कि यह वास्तव में एक समस्या है यदि आपको ऐसी घटना के लिए अतिरिक्त अधिसूचनाएं मिलती हैं जिनकी आपको आवश्यकता नहीं है। – njzk2

उत्तर

0

मैंने संपर्क कंट्रैक्ट का उपयोग किया। संपर्क .CONTENT_VCARD_URI जैसा कि here का उल्लेख किया गया है।

और यह भी आप सेट कर सकते हैं एक तरह एक threshold_time उल्लेख here

इसका थोड़ा और अधिक कुशल।

0

ContentObserver से अधिसूचनाएं प्राप्त करना बंद करने के लिए, आपको इसे अनधिकृत करना होगा।

ContentObserver का एक उदाहरण बनाएं जिसका उपयोग आप बाद में पंजीकरण/पंजीकरण के लिए कर सकते हैं।

Contact_change changeObserver = new Contact_change(); 

रजिस्टर पर्यवेक्षक:

getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true,changeObserver); 

अपंजीकृत पर्यवेक्षक:

getContentResolver().unregisterContentObserver(changeObserver); 
संबंधित मुद्दे