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