8

मैं एक ऐप बना रहा हूं जो उपयोगकर्ता के संपर्कों पर भारी निर्भर करता है।एंड्रॉइड: व्हाट्सएप जैसे परिवर्तनों से संपर्क करने के लिए सुनना

मैंने Account बनाया है और आवश्यकता होने पर इस खाते की ओर से RawContacts बना दिया है।
और मैं SyncAdapter का उपयोग करता हूं और चीजें बहुत अच्छी हैं।

लेकिन मैं अभी भी इस पहेली के कुछ भागों याद कर रहा हूँ:

मैं एक व्यवहार WhatsApp के लिए इसी तरह लागू करने के लिए कोशिश कर रहा हूँ। इस तरह-

जब किसी भी संपर्क के नाम या फोन में कोई परिवर्तन होता है - इसे के मूल्यांकन के लिए सर्वर पर भेजा जाएगा।

चाहे यह संपर्क पहले से ही "मेरे" RawContacts में था, चाहे वह अभी उपयोगकर्ता द्वारा बनाया गया हो।

मुझे पता है कि ContentObserver है लेकिन ContactsContract.Contacts.CONTENT_URI ट्रैकिंग करना गलत काम जैसा लगता है क्योंकि यह विशिष्ट परिवर्तन नहीं देता है, साथ ही यह कई बार उठाया जाता है, और कई घटनाओं से जो मुझे रूचि नहीं देते हैं।

मुझे पता है कि व्हाट्सएप SyncAdapter का उपयोग कर रहा है लेकिन मुझे लगता है कि वे कुछ और कर रहे हैं।

किसी भी विचार की बहुत सराहना की जाएगी।

+0

@ हागाई ... इस बारे में कोई अपडेट है कि आपने इसका सामना कैसे किया ?? मैंने नवीनतम अपडेट किए गए संपर्क प्राप्त करने के लिए अपने कोड में CONTACT_LAST_UPDATED_TIMESTAMP का उपयोग किया है, लेकिन यदि आप किसी संपर्क में किसी भी फ़ील्ड को अपडेट करते हैं तो इस स्टैम्प में कोई बदलाव नहीं होता है, जिसमें केवल ईमेल आईडी है। –

उत्तर

0

ContentObserver ट्रैकिंग ContactsContract.Contacts.CONTENT_URI वास्तव में जाने का तरीका है।

जब आप onChange() मिल आप निम्नलिखित शर्त के साथ raw_contacts तालिका क्वेरी:

String where = "(rawcontacts.dirty = true or rawcontacts.deleted = 1) and rawcontacts.account_type = <your_custom_type>" 

परिणाम आप संपर्क, जोड़ा अद्यतन या नष्ट कर दिया दे देंगे।

यदि आप अधिक जानकारी जानने में रुचि रखते हैं - ContactsContract.Contacts.CONTENT_URI पर आपको सब्सक्राइब करने की आवश्यकता क्यों है, तो वर्तमान में संपर्क प्रदाता यह सूचित नहीं करता है कि चेंज() में कौन से संपर्क संशोधित किए गए थे। यह applyBatch() लेन-देन की वजह से है जहां एकाधिक संपर्क बदल सकते हैं। भविष्य में हो सकता है कि सबसेट की सदस्यता लेने का एक तरीका होगा - लेकिन वर्तमान में कोई भी नहीं है।

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

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