एंड्रॉइड 10 में शुरू, संपर्क प्रदाता घटक (डिवाइस के संपर्क ऐप में देखे गए डेटा का स्रोत) द्वारा प्रबंधित संपर्क-एफ़िनिटी-संबंधित डेटा, एंड्रॉइड 9 और उससे कम की तुलना में अलग तरह से एक्सेस किया जाता है।
एंड्रॉइड 10 से पहले, ऐप्स डेटा तक पहुंचने और इसे डिवाइस और ऑनलाइन सेवाओं के बीच स्थानांतरित करने के लिए संपर्क प्रदाता का उपयोग करते थे। Android 10 में संपर्क प्रदाता का उपयोग करने वाले सभी Android 10 उपकरणों में बढ़ी हुई उपयोगकर्ता गोपनीयता सुनिश्चित करने के लिए डेटा एक्सेसिबिलिटी के संबंध में बदलाव किए गए हैं। एक के लिए, अंतर्निहित डेटाबेस में संपर्क समानता डेटा नहीं है। इसलिए ऐप्स इसे लिख या पढ़ नहीं सकते हैं। परिवर्तनों में निम्नलिखित शामिल हैं:
- संपर्क प्रदाता संपर्क-एफ़िनिटी-संबंधित डेटा को रिकॉर्ड नहीं करता है, जैसे कि उपयोगकर्ता से कितनी बार संपर्क किया गया था, संपर्क का अंतिम समय, उपयोग किया गया ऐप, संपर्क करने वाला व्यक्ति, या कोई भी संबंधित ऐतिहासिक डेटा।
- संपर्क प्रदाता स्वत: पूर्ण API में
MultiAutoCompleteTextView
वर्ग इंटरेक्शन काउंटर द्वारा क्वेरी परिणामों को सॉर्ट नहीं करता है। - एंड्रॉइड फ्रेमवर्क निहित संपर्क रैंकिंग प्रदान नहीं करता है। (हालांकि, उपयोगकर्ता द्वारा नियंत्रित, स्पष्ट संपर्क रैंकिंग (जैसे तारांकित संपर्क) बनी हुई है)।
इन परिवर्तनों को लागू करने के लिए, निम्न में से कोई एक कार्य करें:
- नवीनतम संपर्क प्रदाता का उपयोग करें।
- अपना संस्करण अपडेट करें (यदि आप फोर्क किए गए संस्करण का उपयोग कर रहे हैं)।
इसके अलावा, ऐसे किसी भी ऐप को अपडेट करें जो बहिष्कृत संपर्क प्रदाता सुविधाओं पर निर्भर है। बहिष्कृत कार्यों के समाधान के लिए डिज़ाइन किए गए API संस्करणों की अनुमति नहीं है।
Android 9 और उसके बाद के संस्करण के लिए, संपर्क प्रदाता से संपर्क-बातचीत डेटा हटाया नहीं गया है। इसके बजाय, एंड्रॉइड 10 में समकक्ष को अनुकरण करने के लिए संपर्क-इंटरैक्शन डेटा को समय-समय पर (प्रति दिन लगभग एक बार) साफ़ किया जाता है। संपर्क प्रदाता इस जानकारी को संग्रहीत करता है, लेकिन केवल अस्थायी रूप से।
एपीआई परिवर्तन
इन परिवर्तनों का एपीआई पर बड़ा प्रभाव पड़ने की उम्मीद है। उदाहरण के लिए, स्वतः पूर्ण रैंकिंग अच्छा प्रदर्शन नहीं करेगी। एपीआई व्यवहार पर संभावित प्रभावों में निम्नलिखित शामिल हैं:
- संपर्क प्रदाता संपर्क के लिए उपयोगकर्ता की प्राथमिकताएं, या संपर्क के साथ संपर्क,
ContactsContract.Contacts
तालिका कॉलम में संग्रहीत नहीं करेगा। - स्वत: पूर्ण API इंटरेक्शन काउंटर द्वारा परिणामों को सॉर्ट नहीं करेगा।
-
TIMES_CONTACTED
/TIMES_USED
औरLAST_TIME_CONTACTED
/LAST_TIME_USED
कॉलम अपडेट नहीं होंगे। - एंड्रॉइड 10 में अपग्रेड करने पर ये स्पष्ट (प्रभावित कॉलम के आधार पर या तो
null
या 0 पर सेट)। - स्वत: पूर्ण क्वेरी API में रैंकिंग वर्णानुक्रम में क्रमबद्ध परिणाम लौटाती है, कभी भी एफ़िनिटी जानकारी के आधार पर नहीं।
- एपीआई लगातार संपर्कों के लिए कॉल करता है (उदाहरण के लिए, फ़िल्टर स्ट्रिंग
CONTENT_FREQUENT_URI
का उपयोग करके) कोई परिणाम नहीं देता है।
आम तौर पर, यदि बहिष्कृत संपर्क प्रदाता एपीआई तत्वों में से कोई भी काउंटर का उपयोग करता है, तो उन काउंटरों (जब एंड्रॉइड 10 में उपयोग किया जाता है) में 0 होता है, और पूछे जाने पर 0 वापस आ जाता है। प्रभावित API के अपडेट अनुरोधों को अनदेखा कर दिया जाता है। उदाहरण के लिए, 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
Android 10 में प्रभावित फ़ील्ड अलग-अलग API में मौजूद हो सकते हैं, जैसा कि नीचे दी गई तालिका में दर्शाया गया है। बहिष्कृत API फ़ील्ड सूचीबद्ध के रूप में व्यवहार लौटाते हैं। चूंकि इनमें से एक बहिष्कृत फ़ील्ड का उपयोग आपके कई API में किया जा सकता है, इसलिए अपने उपयोग के मामलों की पुष्टि करें।
कक्षा | एपीआई क्षेत्र | 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 | फ़िल्टर (जिसे स्वतः पूर्ण भी कहा जाता है) API | परिणाम एफ़िनिटी द्वारा क्रमबद्ध नहीं हैं। इन्हें तारांकित और नाम के अनुसार क्रमबद्ध किया जाता है। |
वैकल्पिक
बहिष्कृत API फ़ील्ड के लिए कोई विकल्प नहीं हैं। इन प्रतिबंधों से बचने के लिए डिज़ाइन किए गए समाधान, चाहे नए API के रूप में हों या नए फ़ील्ड के रूप में, की अनुमति नहीं है।
कार्यान्वयन
इन परिवर्तनों को लागू करने के लिए आपको कुछ भी करने की आवश्यकता नहीं है। वे एंड्रॉइड ओएस प्लेटफॉर्म पर उपयोगकर्ता की गोपनीयता बढ़ाने की पहल का हिस्सा हैं। हालांकि, यदि आपके ऐप्स बहिष्कृत सुविधाओं पर भरोसा करते हैं, तो हो सकता है कि आप किसी भी बदलाव की भरपाई के लिए अपने ऐप्स को अपडेट करना चाहें। इसके अतिरिक्त, यदि आप संपर्क प्रदाता के फोर्कड संस्करण का उपयोग करते हैं, तो आपको अपने संपर्क प्रदाता को अपडेट करना होगा।
कोई अनुकूलन नहीं
संपर्क एफ़िनिटी जानकारी परिवर्तनों को अनुकूलित या उनके आसपास काम न करें। वे ढांचे में अंतर्निहित हैं, और कोई भी परिवर्तन करने से आप अनुपालन से बाहर हो जाते हैं। कभी भी डिफ़ॉल्ट सेटिंग्स में बदलाव न करें या पिछले दरवाजे के विकल्प प्रदान न करें।