एंड्रॉइड 10 से शुरू होकर, संपर्क-एफ़िनिटी-संबंधित डेटा, संपर्क प्रदाता घटक (डिवाइस के संपर्क ऐप में देखे गए डेटा का स्रोत) द्वारा प्रबंधित किया जाता है, जिसे एंड्रॉइड 9 और उससे पहले की तुलना में अलग तरीके से एक्सेस किया जाता है।
एंड्रॉइड 10 से पहले, ऐप्स डेटा तक पहुंचने और इसे डिवाइस और ऑनलाइन सेवाओं के बीच स्थानांतरित करने के लिए संपर्क प्रदाता का उपयोग करते थे। एंड्रॉइड 10 में संपर्क प्रदाता का उपयोग करने वाले सभी एंड्रॉइड 10 उपकरणों में बढ़ी हुई उपयोगकर्ता गोपनीयता सुनिश्चित करने के लिए डेटा एक्सेसिबिलिटी के संबंध में बदलाव किए गए हैं। एक के लिए, अंतर्निहित डेटाबेस में संपर्क समानता डेटा शामिल नहीं है। इसलिए ऐप्स इसमें लिख या पढ़ नहीं सकते। परिवर्तनों में निम्नलिखित शामिल हैं:
- संपर्क प्रदाता संपर्क-एफ़िनिटी-संबंधित डेटा रिकॉर्ड नहीं करता है, जैसे कि उपयोगकर्ता से कितनी बार संपर्क किया गया, संपर्क का अंतिम समय, उपयोग किया गया ऐप, संपर्क किया गया व्यक्ति, या कोई संबंधित ऐतिहासिक डेटा।
- संपर्क प्रदाता स्वत: पूर्ण API में
MultiAutoCompleteTextView
वर्ग इंटरैक्शन काउंटर द्वारा क्वेरी परिणामों को क्रमबद्ध नहीं करता है। - एंड्रॉइड फ्रेमवर्क अंतर्निहित संपर्क रैंकिंग प्रदान नहीं करता है। (हालांकि, उपयोगकर्ता-नियंत्रित, स्पष्ट संपर्क रैंकिंग (जैसे तारांकित संपर्क) बनी हुई है)।
इन परिवर्तनों को लागू करने के लिए, निम्न में से कोई एक कार्य करें:
- नवीनतम संपर्क प्रदाता का उपयोग करें.
- अपना संस्करण अपडेट करें (यदि आप फोर्क्ड संस्करण का उपयोग कर रहे हैं)।
इसके अलावा, ऐसे सभी ऐप्स को अपडेट करें जो अप्रचलित संपर्क प्रदाता सुविधाओं पर निर्भर हैं। अप्रचलित कार्यों के समाधान के लिए डिज़ाइन किए गए एपीआई संस्करणों की अनुमति नहीं है।
एंड्रॉइड 9 और उससे पहले के संस्करण के लिए, संपर्क प्रदाता से संपर्क-इंटरैक्शन डेटा हटाया नहीं गया है। इसके बजाय, एंड्रॉइड 10 में समकक्ष अनुकरण करने के लिए संपर्क-इंटरैक्शन डेटा को समय-समय पर (प्रति दिन लगभग एक बार) साफ़ किया जाता है। संपर्क प्रदाता इस जानकारी को संग्रहीत करता है, लेकिन केवल अस्थायी रूप से।
एपीआई परिवर्तन
इन बदलावों से एपीआई पर बड़ा असर पड़ने की उम्मीद है। उदाहरण के लिए, स्वत: पूर्ण रैंकिंग उतना अच्छा प्रदर्शन नहीं करेगी. एपीआई व्यवहार पर संभावित प्रभावों में निम्नलिखित शामिल हैं:
- संपर्क प्रदाता, संपर्क के लिए उपयोगकर्ता की प्राथमिकताओं या उसके साथ इंटरैक्शन को
ContactsContract.Contacts
तालिका कॉलम में संग्रहीत नहीं करेगा। - स्वत: पूर्ण एपीआई इंटरेक्शन काउंटर के आधार पर परिणामों को क्रमबद्ध नहीं करेगा।
-
TIMES_CONTACTED
/TIMES_USED
औरLAST_TIME_CONTACTED
/LAST_TIME_USED
कॉलम अपडेट नहीं किए जाएंगे। - एंड्रॉइड 10 में अपग्रेड करने पर ये साफ़ हो जाते हैं (प्रभावित कॉलम के आधार पर या तो
null
या 0 पर सेट हो जाते हैं)। - स्वत: पूर्ण क्वेरी एपीआई में रैंकिंग वर्णानुक्रम में क्रमबद्ध परिणाम लौटाती है, कभी भी एफ़िनिटी जानकारी के आधार पर नहीं।
- लगातार संपर्कों के लिए एपीआई कॉल (उदाहरण के लिए, फ़िल्टर स्ट्रिंग
CONTENT_FREQUENT_URI
का उपयोग करके) कोई परिणाम नहीं देता है।
आम तौर पर, यदि अप्रचलित संपर्क प्रदाता एपीआई तत्वों में से कोई भी काउंटर का उपयोग करता है, तो उन काउंटरों (जब एंड्रॉइड 10 में उपयोग किया जाता है) में 0 होता है, और पूछे जाने पर 0 लौटाता है। प्रभावित एपीआई से अद्यतन अनुरोधों को नजरअंदाज कर दिया जाता है। उदाहरण के लिए, ContactsContract.DataUsageFeedback
क्लास को हटा दिया गया था, इसलिए इस क्लास में अपडेट और डिलीट कॉल को नजरअंदाज कर दिया गया है।
फ़ील्ड जो एपीआई को प्रभावित करते हैं
Android 10 में ये फ़ील्ड बदल गए हैं:
-
ContactsContract.ContactOptionsColumns#TIMES_CONTACTED
-
ContactsContract.ContractOptionsColumns.LAST_TIME_CONTACTED
-
ContactsContract.DataUsageStatColumns#TIMES_USED
-
ContactsContract.DataUsageStatColumns#LAST_TIME_USED
-
ContactsContract#CONTENT_STREQUENT_FILTER_URI
-
ContactsContract.Contacts#CONTENT_STREQUENT_URI
-
ContactsContract.Contacts#CONTENT_FREQUENT_URI
-
ContactsContract.Contacts#ENTERPRISE_CONTENT_FILTER_URI
-
ContactsContract.Contacts#CONTENT_FILTER_URI
एंड्रॉइड 10 में प्रभावित फ़ील्ड विभिन्न एपीआई में मौजूद हो सकते हैं, जैसा कि नीचे दी गई तालिका में दर्शाया गया है। बहिष्कृत एपीआई फ़ील्ड सूचीबद्ध व्यवहार लौटाते हैं। क्योंकि इन अप्रचलित फ़ील्ड में से एक का उपयोग आपके कई एपीआई में किया जा सकता है, अपने उपयोग के मामलों को सत्यापित करें।
कक्षा | एपीआई फ़ील्ड | 10 रिटर्न |
---|---|---|
ContactsContract.Contacts ContactsContract.RawContacts ContactsContract.Data ContactsContract.Entity | ContactOptionsColumns TIMES_CONTACTED LAST_TIME_CONTACTED | इन कॉलमों में हमेशा 0 होता है, भले ही उनका उपयोग कैसे भी किया गया हो। उन्हें संशोधित करने के प्रयासों को नजरअंदाज कर दिया जाता है। |
Contacts | markAsContacted() | कोई ऑपरेशन नहीं। |
ContactsContract.DataUsageFeedback | | कोई ऑपरेशन नहीं। |
ContactsContract.Contacts | लगातार ( तारांकित + लगातार)CONTENT_STREQUENT_FILTER_URI CONTENT_STREQUENT_URI CONTENT_FREQUENT_URI | केवल तारांकित संपर्क लौटाता है। कोई बारंबार संपर्क वापस नहीं आया. |
ContactsContract.CommonDataKinds.Email ContactsContract.CommonDataKinds.Phone ContactsContract.CommonDataKinds.Callable | फ़िल्टर (जिसे स्वत: पूर्ण भी कहा जाता है) एपीआई | परिणाम एफ़िनिटी के आधार पर क्रमबद्ध नहीं हैं. इन्हें तारांकित और नाम के आधार पर क्रमबद्ध किया गया है। |
वैकल्पिक
अप्रचलित एपीआई फ़ील्ड का कोई विकल्प नहीं है। इन प्रतिबंधों से बचने के लिए डिज़ाइन किए गए समाधान, चाहे नए एपीआई या नए फ़ील्ड के रूप में हों, की अनुमति नहीं है।
कार्यान्वयन
इन परिवर्तनों को लागू करने के लिए आपको कुछ भी करने की आवश्यकता नहीं है. वे एंड्रॉइड ओएस प्लेटफॉर्म पर उपयोगकर्ता की गोपनीयता बढ़ाने की पहल का हिस्सा हैं। हालाँकि, यदि आपके ऐप्स अप्रचलित सुविधाओं पर निर्भर हैं, तो आप किसी भी बदलाव की भरपाई के लिए अपने ऐप्स को अपडेट करना चाह सकते हैं। इसके अतिरिक्त, यदि आप संपर्क प्रदाता के फोर्क्ड संस्करण का उपयोग करते हैं, तो आपको अपने संपर्क प्रदाता को अपडेट करना होगा।
कोई अनुकूलन नहीं
संपर्क एफ़िनिटी जानकारी परिवर्तनों को अनुकूलित या उसके आसपास काम न करें। वे ढांचे में निर्मित हैं, और कोई भी बदलाव करने से आप अनुपालन से बाहर हो जाते हैं। कभी भी डिफ़ॉल्ट सेटिंग्स में बदलाव न करें या पिछले दरवाजे के विकल्प प्रदान न करें।