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