Android 10 से, संपर्कों से जुड़ी दिलचस्पी के डेटा को Android 9 और उससे पहले के वर्शन के मुकाबले अलग तरीके से ऐक्सेस किया जाता है. यह डेटा, संपर्कों की जानकारी देने वाली सेवा कॉम्पोनेंट (डिवाइस के संपर्क ऐप्लिकेशन में दिखने वाले डेटा का सोर्स) से मैनेज किया जाता है.
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_CONTACTEDContactsContract.ContractOptionsColumns.LAST_TIME_CONTACTEDContactsContract.DataUsageStatColumns#TIMES_USEDContactsContract.DataUsageStatColumns#LAST_TIME_USEDContactsContract#CONTENT_STREQUENT_FILTER_URIContactsContract.Contacts#CONTENT_STREQUENT_URIContactsContract.Contacts#CONTENT_FREQUENT_URIContactsContract.Contacts#ENTERPRISE_CONTENT_FILTER_URIContactsContract.Contacts#CONTENT_FILTER_URI
Android 10 में जिन फ़ील्ड पर असर पड़ा है वे अलग-अलग एपीआई में मौजूद हो सकते हैं, जैसा कि यहां दी गई टेबल में बताया गया है. काम न करने वाले एपीआई फ़ील्ड, सूची में बताए गए व्यवहार दिखाते हैं. इनमें से किसी एक फ़ील्ड का इस्तेमाल, आपके कई एपीआई में किया जा सकता है. इसलिए, इस्तेमाल के उदाहरणों की पुष्टि करें.
| कक्षा | एपीआई फ़ील्ड | 10 आइटम लौटाए गए |
|---|---|---|
ContactsContract.ContactsContactsContract.RawContactsContactsContract.DataContactsContract.Entity
|
ContactOptionsColumnsTIMES_CONTACTEDLAST_TIME_CONTACTED
|
इन कॉलम में हमेशा 0 होता है, भले ही इनका इस्तेमाल किसी भी तरह से किया गया हो. इनमें बदलाव करने की कोशिशों को अनदेखा कर दिया जाता है. |
Contacts
|
markAsContacted() |
कोई कार्रवाई नहीं की गई. |
ContactsContract.DataUsageFeedback
|
|
कोई कार्रवाई नहीं की गई. |
ContactsContract.Contacts
|
अक्सर इस्तेमाल किया जाने वाला (स्टार के निशान वाला + अक्सर इस्तेमाल किया जाने वाला)CONTENT_STREQUENT_FILTER_URICONTENT_STREQUENT_URICONTENT_FREQUENT_URI
|
सिर्फ़ स्टार के निशान वाले संपर्कों की जानकारी दिखाता है. अक्सर इस्तेमाल किए जाने वाले संपर्कों की सूची नहीं मिली. |
ContactsContract.CommonDataKinds.EmailContactsContract.CommonDataKinds.PhoneContactsContract.CommonDataKinds.Callable
|
फ़िल्टर (इसे ऑटोकंप्लीट भी कहा जाता है) एपीआई
|
नतीजे, मिलते-जुलते विषय के हिसाब से नहीं लगाए गए हैं. इन्हें स्टार के निशान और नाम के हिसाब से क्रम में लगाया जाता है. |
विकल्प
बंद किए गए एपीआई फ़ील्ड के लिए कोई विकल्प नहीं है. इन पाबंदियों को गच्चा देने के लिए, नए एपीआई या नए फ़ील्ड के तौर पर डिज़ाइन किए गए तरीकों की अनुमति नहीं है.
लागू करना
इन बदलावों को लागू करने के लिए, आपको कुछ करने की ज़रूरत नहीं है. ये Android OS प्लैटफ़ॉर्म पर उपयोगकर्ता की निजता को बेहतर बनाने के लिए किए गए प्रयासों का हिस्सा हैं. हालांकि, अगर आपके ऐप्लिकेशन, बंद की गई सुविधाओं पर निर्भर हैं, तो किसी भी बदलाव की भरपाई करने के लिए, अपने ऐप्लिकेशन अपडेट करें. इसके अलावा, अगर Contacts Provider के फ़ोक्ड वर्शन का इस्तेमाल किया जाता है, तो आपको Contacts Provider को अपडेट करना होगा.
पसंद के मुताबिक नहीं बनाया जा सकता
संपर्कों की अफ़िनिटी की जानकारी में किए गए बदलावों को पसंद के मुताबिक न बनाएं या उनसे बचने की कोशिश न करें. ये फ़्रेमवर्क में पहले से मौजूद होते हैं. इनमें कोई बदलाव करने पर, आपका ऐप्लिकेशन नीति का पालन नहीं करता. डिफ़ॉल्ट सेटिंग में कभी बदलाव न करें या बैकडोर के विकल्प न दें.