फ़ोन नंबर ब्लॉक करने की सुविधा लागू करें

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

Android 7.0 से पहले, Android उपयोगकर्ताओं को कॉल और परेशान करने वाले फ़ोन नंबर से मैसेज भेजते हैं. इनमें से कई ऐप्लिकेशन ठीक से काम नहीं करते या कॉल और मैसेज को ब्लॉक करने के लिए सही एपीआई उपलब्ध न होने की वजह से, इनका इस्तेमाल करना मुश्किल होता है.

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

सुविधाएं

Android 7.0 रिलीज़ में, BlockedNumberProvider कॉन्टेंट की सेवा देने वाली कंपनी की सुविधा जोड़ी गई है. यह उन फ़ोन नंबरों की सूची सेव करती है जिनके ज़रिए उपयोगकर्ता को कॉल, एसएमएस, और एमएमएस नहीं भेजने चाहिए. कॉन्टेंट बनाने सिस्टम, ब्लॉक की गई सूची में शामिल नंबरों पर किए जाने वाले कॉल को सीमित करके और मैसेज देख सकता है. Android 7.0, ब्लॉक किए गए नंबर की सूची दिखाता है और उपयोगकर्ता को नंबर जोड़ने और हटाने की अनुमति देता है.

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

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

डेटा फ़्लो

नंबर डेटा फ़्लो को ब्लॉक करें

पहला डायग्राम. फ़ोन नंबर का डेटा फ़्लो ब्लॉक करें

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

यहां नंबर ब्लॉक करने वाली नई सुविधा का इस्तेमाल करके किए जाने वाले कॉल के उदाहरण दिए गए हैं:

ऐप्लिकेशन से ब्लॉक किया गया नंबर मैनेजर लॉन्च करें

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);

लागू करना

नंबर ब्लॉक करने के लिए, इन बेहद ज़रूरी टास्क को पूरा करना ज़रूरी है सुविधा का इस्तेमाल करें:

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

OEM के लिए सुझाव

अगर डिवाइस को पहले कभी कोई अतिरिक्त कॉल/मैसेज नहीं भेजा गया था पाबंदी से जुड़ी सुविधाएं, Android ओपन सोर्स में जाकर नंबर ब्लॉक करने की सुविधा का इस्तेमाल करें ऐसे सभी डिवाइसों पर प्रोजेक्ट (एओएसपी) के तौर पर एक्सपोर्ट करना होगा. हमारा सुझाव है कि ब्लॉक करने के लिए, सही एंट्री पॉइंट उपलब्ध कराएं. जैसे, कॉल लॉग या मैसेज थ्रेड में जाकर किसी नंबर को ब्लॉक करना.

अगर डिवाइस पहले से ही कॉल/मैसेज पर पाबंदी लगाने की सुविधाओं के साथ शिप किया गया था, तो इन सुविधाओं को इस तरह से अडजस्ट करें कि BlockedNumberProvider, में, सटीक मैच वाले सभी फ़ोन नंबर ब्लॉक किए गए हों. साथ ही, सेवा देने वाली कंपनी के व्यवहार से, Android के साथ काम करने की शर्तों के बारे में बताने वाले दस्तावेज़ (सीडीडी) में बताई गई, इस सुविधा की ज़रूरी शर्तें पूरी होती हों.

किसी भी अन्य बेहतर सुविधा को, पसंद के मुताबिक सेवा देने वाली कंपनियों और कस्टम यूज़र इंटरफ़ेस (यूआई) के ज़रिए लागू किया जा सकता है / नियंत्रण, जब तक कि सीडीडी की ज़रूरतें, सख्त-मिलान वाले फ़ोन नंबर को ब्लॉक करने का तरीका. यह सुझाव दिया जाता है कि वे दूसरी सुविधाएं उन्हें “ऐडवांस” सुविधाओं के तौर पर लेबल किया जाना चाहिए, ताकि वे बुनियादी सुविधाओं को समझने में नंबर ब्लॉक करने की सुविधा.

API

यहां कुछ API का इस्तेमाल किया जा रहा है:

  • 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)

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

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

कृपया ध्यान दें कि BlockedNumberProvider का इस्तेमाल करके, ब्लॉक की गई सूची को वापस लाने के लिए, पार्टनर के पास बैकअप लेने और डेटा वापस पाने की सुविधा वाला पीसी ऐप्लिकेशन होना चाहिए. ब्लॉक किए गए विज्ञापनों के लिए, नीचे दी गई इमेज देखें AOSP में दिए गए नंबर इंटरफ़ेस.

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

दूसरा डायग्राम. फ़ोन नंबर का यूज़र इंटरफ़ेस ब्लॉक करें

पुष्टि करें

लागू करने वाले लोग, यहां दिए गए सीटीएस टेस्ट चलाकर यह पक्का कर सकते हैं कि सुविधा का उनका वर्शन सही तरीके से काम कर रहा है:

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

adb निर्देशों का इस्तेमाल करके BlockedNumberProvider में बदलाव किया जा सकता है $ adb root चलाने के बाद. उदाहरण के लिए:

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