फ़ोन नंबरों को ब्लॉक करने का कार्यान्वयन

क्योंकि टेलीफोनी एक ऐसा खुला संचार चैनल है - कोई भी किसी भी समय किसी भी नंबर पर कॉल या टेक्स्ट कर सकता है - एंड्रॉइड उपयोगकर्ताओं को अवांछित कॉल और टेक्स्ट को आसानी से ब्लॉक करने की क्षमता की आवश्यकता होती है।

एन से पहले, एंड्रॉइड उपयोगकर्ताओं को परेशान करने वाले फोन नंबरों से कॉल और टेक्स्ट को प्रतिबंधित करने के लिए डाउनलोड किए गए ऐप्स पर निर्भर रहना पड़ता था। उनमें से कई ऐप्स या तो इच्छानुसार काम नहीं करते हैं या आदर्श से कम अनुभव प्रदान करते हैं क्योंकि कॉल और संदेशों को ब्लॉक करने के लिए कोई उचित एपीआई नहीं हैं।

कुछ निर्माता अपने स्वयं के अवरोधन समाधानों को आउट-ऑफ़-द-बॉक्स भेज सकते हैं, लेकिन यदि उपयोगकर्ता डिवाइस बदलते हैं, तो इंटरऑपरेबिलिटी की कमी के कारण वे अवरुद्ध सूची को पूरी तरह से खो सकते हैं। अंत में, भले ही उपयोगकर्ता डायलिंग ऐप्स और मैसेजिंग क्लाइंट को नियोजित कर रहे हों जो ऐसी कार्यक्षमता प्रदान करते हैं, फिर भी उन्हें कॉलिंग और टेक्स्टिंग दोनों के लिए ब्लॉक को प्रभावी करने के लिए प्रत्येक ऐप में ब्लॉक कार्रवाई करनी होगी।

विशेषताएँ

एंड्रॉइड 7.0 रिलीज़ एक BlockedNumberProvider सामग्री प्रदाता पेश करता है जो उपयोगकर्ता द्वारा निर्दिष्ट फ़ोन नंबरों की एक सूची संग्रहीत करता है, जिससे उन्हें टेलीफोनी संचार (कॉल, एसएमएस, एमएमएस) के माध्यम से संपर्क करने में सक्षम नहीं होना चाहिए। सिस्टम उन नंबरों से कॉल और टेक्स्ट को प्रतिबंधित करके अवरुद्ध सूची में मौजूद नंबरों का सम्मान करेगा। एंड्रॉइड 7.0 अवरुद्ध नंबरों की सूची प्रदर्शित करता है और उपयोगकर्ता को नंबर जोड़ने और हटाने की अनुमति देता है।

इसके अलावा, नंबर-ब्लॉकिंग सुविधा सिस्टम और प्लेटफ़ॉर्म पर संबंधित ऐप्स को उपयोगकर्ता की सुरक्षा और अनुभव को सरल बनाने में मदद करने के लिए एक साथ काम करने में सक्षम बनाती है। डिफ़ॉल्ट डायलर, डिफ़ॉल्ट मैसेजिंग क्लाइंट, यूआईसीसी-विशेषाधिकार प्राप्त ऐप और सिस्टम के समान हस्ताक्षर वाले ऐप्स सभी सीधे अवरुद्ध सूची से पढ़ और लिख सकते हैं। क्योंकि ब्लॉक किए गए नंबर सिस्टम पर संग्रहीत होते हैं, इससे कोई फर्क नहीं पड़ता कि उपयोगकर्ता किस डायलिंग या मैसेजिंग ऐप का उपयोग करता है, नंबर ब्लॉक रहते हैं। अंत में, निर्माता की परवाह किए बिना, किसी भी नए डिवाइस पर अवरुद्ध नंबर सूची को पुनर्स्थापित किया जा सकता है।

  • उपयोगकर्ता को एक ब्लॉकिंग सुविधा की गारंटी दी जाएगी जो आउट-ऑफ़-द-बॉक्स काम करती है और ऐप स्विच करने या नया फ़ोन लेने पर उनकी ब्लॉक सूची नहीं खोएगी। सिस्टम पर सभी प्रासंगिक ऐप्स उपयोगकर्ता को सबसे सुव्यवस्थित अनुभव प्रदान करने के लिए एक ही सूची साझा कर सकते हैं।
  • ऐप डेवलपर्स को ब्लॉक सूची और आने वाले कॉल और संदेशों को प्रबंधित करने के लिए अपना स्वयं का तरीका विकसित करने की आवश्यकता नहीं है। वे बस प्लेटफ़ॉर्म द्वारा प्रदान की गई सुविधा का उपयोग कर सकते हैं।
  • उपयोगकर्ता द्वारा डिफ़ॉल्ट के रूप में चुने गए डायलर/मैसेंजर ऐप्स प्रदाता को पढ़ और लिख सकते हैं। अन्य ऐप्स createManageBlockedNumbersIntent() का उपयोग करके ब्लॉक सूची प्रबंधन उपयोगकर्ता इंटरफ़ेस लॉन्च कर सकते हैं
  • OEM ब्लॉकिंग सुविधा को आउट-ऑफ़-द-बॉक्स भेजने के लिए प्लेटफ़ॉर्म द्वारा प्रदान की गई सुविधा का उपयोग कर सकते हैं। ओईएम निश्चिंत हो सकते हैं कि जब उपयोगकर्ता किसी अन्य ओईएम के डिवाइस से स्विच करते हैं तो उन्हें बेहतर ऑनबोर्डिंग अनुभव होता है क्योंकि ब्लॉक सूची भी स्थानांतरित हो जाएगी।
  • यदि वाहक के पास अपना स्वयं का डायलर या मैसेंजर ऐप है, तो वे उपयोगकर्ता को ब्लॉक सूची बनाए रखने की अनुमति देने के लिए प्लेटफ़ॉर्म सुविधा का पुन: उपयोग कर सकते हैं। वे निश्चिंत हो सकते हैं कि उपयोगकर्ता की ब्लॉक सूची उपयोगकर्ताओं के पास रह सकती है, भले ही उन्हें कोई नया उपकरण मिले। अंत में, सभी वाहक-विशेषाधिकार प्राप्त ऐप्स ब्लॉक सूची को पढ़ सकते हैं, इसलिए यदि वाहक ब्लॉक सूची के आधार पर उपयोगकर्ता के लिए कुछ अतिरिक्त अधिक शक्तिशाली ब्लॉकिंग प्रदान करना चाहता है, तो यह अब इस सुविधा के साथ संभव है।

डेटा प्रवाह

ब्लॉक संख्या डेटा प्रवाह

चित्र 1. फ़ोन नंबर डेटा प्रवाह को ब्लॉक करें

उदाहरण और स्रोत

नंबर-ब्लॉकिंग नई सुविधा का उपयोग करके कॉल के उदाहरण यहां दिए गए हैं:

ऐप से ब्लॉक किए गए नंबर मैनेजर को लॉन्च करें

Context.startActivity(telecomManager.createManageBlockedNumbersIntent(), null);

अवरुद्ध नंबरों को क्वेरी करें

Cursor c = getContentResolver().query(BlockedNumbers.CONTENT_URI,
         new String[]{BlockedNumbers.COLUMN_ID,
         BlockedNumbers.COLUMN_ORIGINAL_NUMBER,
         BlockedNumbers.COLUMN_E164_NUMBER}, null, null, null);

ब्लॉक किया गया नंबर डालें

ContentValues values = new ContentValues();
values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890");
Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values);

ब्लॉक किया गया नंबर हटाएं

ContentValues values = new ContentValues();
values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890");
Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values);
getContentResolver().delete(uri, null, null);

कार्यान्वयन

ये उच्च-स्तरीय कार्य हैं जिन्हें नंबर-ब्लॉकिंग सुविधा का उपयोग करने के लिए पूरा किया जाना चाहिए:

  • OEM BlockedNumberProvider का उपयोग करके अपने डिवाइस पर कॉल/संदेश-प्रतिबंध सुविधाओं को लागू करते हैं
  • यदि वाहक के पास डायलर या मैसेंजर एप्लिकेशन है, तो BlockedNumberProvider का उपयोग करके कॉल/संदेश प्रतिबंध सुविधाओं को लागू करें
  • तृतीय-पक्ष डायलर और मैसेंजर ऐप विक्रेता अपनी ब्लॉकिंग सुविधाओं के लिए BlockedNumberProvider उपयोग करते हैं

OEM के लिए सिफ़ारिशें

यदि डिवाइस ने पहले कभी किसी अतिरिक्त कॉल/मैसेज प्रतिबंध सुविधाओं के साथ शिप नहीं किया था, तो ऐसे सभी उपकरणों पर एंड्रॉइड ओपन सोर्स प्रोजेक्ट (एओएसपी) में नंबर-ब्लॉकिंग सुविधा का उपयोग करें। यह अनुशंसा की जाती है कि ब्लॉक करने के लिए उचित प्रवेश बिंदुओं का समर्थन किया जाए, जैसे कॉल लॉग से या संदेश थ्रेड के भीतर किसी नंबर को ब्लॉक करना।

यदि डिवाइस पहले कॉल/मैसेज प्रतिबंध सुविधाओं के साथ भेजा गया था, तो सुविधाओं को अनुकूलित करें ताकि अवरुद्ध किए गए सभी सख्त-मिलान वाले फ़ोन नंबर ब्लॉक किए BlockedNumberProvider, और प्रदाता के आसपास का व्यवहार एंड्रॉइड संगतता में उल्लिखित इस सुविधा की आवश्यकताओं को पूरा करता है। परिभाषा दस्तावेज़ (सीडीडी)।

किसी भी अन्य उन्नत सुविधा को कस्टम प्रदाताओं और कस्टम यूआई/नियंत्रणों के माध्यम से लागू किया जा सकता है, जब तक कि सख्त-मिलान फोन नंबरों को अवरुद्ध करने के संबंध में सीडीडी आवश्यकताएं संतुष्ट हैं। यह अनुशंसा की जाती है कि मूल संख्या-अवरुद्ध सुविधा के साथ भ्रम से बचने के लिए उन अन्य सुविधाओं को "उन्नत" सुविधाओं के रूप में लेबल किया जाए।

शहद की मक्खी

यहां उपयोग में आने वाली एपीआई हैं:

  • TelecomManager API
    • Intent createManageBlockedNumbersIntent()
  • Carrier Config
    • KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT
  • कृपया BlockedNumberContract देखें
    • BlockedNumberContract द्वारा प्रदान की गई एपीआई
    • boolean isBlocked(Context context, String phoneNumber)
    • int unblock(Context context, String phoneNumber)
    • boolean canCurrentUserBlockNumbers(Context context)

प्रयोक्ता इंटरफ़ेस

AOSP में प्रदान किए गए BlockedNumbersActivity.java उपयोगकर्ता इंटरफ़ेस का उपयोग इस प्रकार किया जा सकता है। डिवाइस कार्यान्वयनकर्ता यूआई का अपना संस्करण भी लागू कर सकते हैं, जब तक कि यह संबंधित सीडीडी आवश्यकताओं को पूरा करता है।

कृपया ध्यान दें, बैकअप और पुनर्स्थापना के लिए भागीदार के पीसी एप्लिकेशन को BlockedNumberProvider का उपयोग करके ब्लॉक सूची की पुनर्स्थापना लागू करने की आवश्यकता हो सकती है। AOSP में दिए गए ब्लॉक किए गए नंबर इंटरफ़ेस के लिए नीचे दी गई छवियां देखें।

ब्लॉक नंबर यूजर इंटरफ़ेस

चित्र 2. फ़ोन नंबर उपयोगकर्ता इंटरफ़ेस को ब्लॉक करें

मान्यकरण

कार्यान्वयनकर्ता निम्नलिखित सीटीएस परीक्षण चलाकर यह सुनिश्चित कर सकते हैं कि फीचर का उनका संस्करण इच्छानुसार काम करता है:

android.provider.cts.BlockedNumberContractTest
com.android.cts.numberblocking.hostside.NumberBlockingTest
android.telecom.cts.ExtendedInCallServiceTest#testIncomingCallFromBlockedNumber_IsRejected
android.telephony.cts.SmsManagerTest#testSmsBlocking

$ adb root चलाने के बाद BlockedNumberProvider adb कमांड का उपयोग करके हेरफेर किया जा सकता है। उदाहरण के लिए:

adb root
adb shell content query --uri content://com.android.blockednumber/blocked
adb shell content insert --uri / content://com.android.blockednumber/blocked --bind / original_number:s:'6501002000'
adb shell content delete --uri / content://com.android.blockednumber/blocked/1