ফোন নম্বর ব্লকিং বাস্তবায়ন করুন

কারণ টেলিফোনি এমন একটি উন্মুক্ত যোগাযোগের চ্যানেল - যেকেউ যেকোন সময় যেকোনো নম্বরে কল বা টেক্সট করতে পারে - অ্যান্ড্রয়েড ব্যবহারকারীদের সহজেই অবাঞ্ছিত কল এবং পাঠ্যগুলি ব্লক করার ক্ষমতা প্রয়োজন৷

অ্যান্ড্রয়েড 7.0 এর আগে, অ্যান্ড্রয়েড ব্যবহারকারীদের বিরক্তিকর ফোন নম্বর থেকে কল এবং টেক্সট সীমাবদ্ধ করতে ডাউনলোড করা অ্যাপের উপর নির্ভর করতে হতো। এই অ্যাপগুলির মধ্যে অনেকগুলি হয় কাঙ্ক্ষিত হিসাবে কাজ করে না বা একটি আদর্শ অভিজ্ঞতা প্রদান করে কারণ কল এবং বার্তাগুলি ব্লক করার জন্য কোনও উপযুক্ত API নেই৷

কিছু নির্মাতারা তাদের নিজস্ব ব্লকিং সমাধানগুলিকে বাক্সের বাইরে পাঠাতে পারে, কিন্তু ব্যবহারকারীরা ডিভাইসগুলি পরিবর্তন করলে, আন্তঃকার্যক্ষমতার অভাবে তারা ব্লক করা তালিকা সম্পূর্ণরূপে হারাতে পারে। অবশেষে, এমনকি যদি ব্যবহারকারীরা ডায়ালিং অ্যাপস এবং মেসেজিং ক্লায়েন্টদের নিয়োগ করে থাকে যা এই ধরনের কার্যকারিতা প্রদান করে, তবুও তাদের কলিং এবং টেক্সটিং উভয়ের জন্য ব্লক কার্যকর হওয়ার জন্য প্রতিটি অ্যাপে ব্লক অ্যাকশন সম্পাদন করতে হবে।

বৈশিষ্ট্য

Android 7.0 রিলিজ একটি BlockedNumberProvider কন্টেন্ট প্রদানকারীর সাথে পরিচয় করিয়ে দেয় যা ব্যবহারকারীর নির্দিষ্ট করা ফোন নম্বরগুলির একটি তালিকা সংরক্ষণ করে টেলিফোনি যোগাযোগের (কল, SMS, MMS) মাধ্যমে তাদের সাথে যোগাযোগ করতে সক্ষম হবে না। সিস্টেম সেই নম্বরগুলি থেকে কল এবং টেক্সট সীমাবদ্ধ করে ব্লক করা তালিকার নম্বরগুলিকে সম্মান করবে৷ অ্যান্ড্রয়েড 7.0 ব্লক করা নম্বরগুলির তালিকা প্রদর্শন করে এবং ব্যবহারকারীকে নম্বরগুলি যোগ করতে এবং সরানোর অনুমতি দেয়।

অধিকন্তু, নম্বর-ব্লকিং বৈশিষ্ট্যটি সিস্টেম এবং প্ল্যাটফর্মের প্রাসঙ্গিক অ্যাপগুলিকে ব্যবহারকারীকে সুরক্ষিত রাখতে এবং অভিজ্ঞতাকে সহজ করতে একসাথে কাজ করতে সক্ষম করে। ডিফল্ট ডায়ালার, ডিফল্ট মেসেজিং ক্লায়েন্ট, UICC-প্রিভিলেজড অ্যাপ এবং সিস্টেমের মতো একই স্বাক্ষর সহ অ্যাপগুলি সবই ব্লক করা তালিকা থেকে সরাসরি পড়তে এবং লিখতে পারে। কারণ ব্লক করা নম্বরগুলি সিস্টেমে সংরক্ষিত থাকে, ব্যবহারকারী যে কোনও ডায়ালিং বা মেসেজিং অ্যাপ ব্যবহার করুক না কেন, নম্বরগুলি ব্লক থাকে৷ অবশেষে, নির্মাতা নির্বিশেষে, ব্লক করা নম্বর তালিকা যেকোনো নতুন ডিভাইসে পুনরুদ্ধার করা যেতে পারে।

  • ব্যবহারকারীর একটি ব্লকিং বৈশিষ্ট্য রয়েছে যা বাক্সের বাইরে কাজ করে এবং যখন তারা অ্যাপ পরিবর্তন করে বা একটি নতুন ফোন পাবে তখন তাদের ব্লক তালিকা হারাবে না বলে নিশ্চিত করা হবে। সিস্টেমের সমস্ত প্রাসঙ্গিক অ্যাপ ব্যবহারকারীকে সবচেয়ে সুগমিত অভিজ্ঞতা প্রদান করতে একই তালিকা ভাগ করতে পারে।
  • অ্যাপ ডেভেলপারদের একটি ব্লক লিস্ট এবং যে কল এবং মেসেজ আসে তা পরিচালনা করার জন্য তাদের নিজস্ব উপায় তৈরি করতে হবে না। তারা কেবল প্ল্যাটফর্ম-প্রদত্ত বৈশিষ্ট্যটি ব্যবহার করতে পারে।
  • ব্যবহারকারীর দ্বারা ডিফল্ট হিসাবে নির্বাচিত ডায়ালার / মেসেঞ্জার অ্যাপগুলি সরবরাহকারীকে পড়তে এবং লিখতে পারে। অন্যান্য অ্যাপস createManageBlockedNumbersIntent() ব্যবহার করে ব্লক লিস্ট ম্যানেজমেন্ট ইউজার ইন্টারফেস চালু করতে পারে
  • OEMs প্ল্যাটফর্ম প্রদত্ত বৈশিষ্ট্য ব্যবহার করতে পারে একটি ব্লকিং বৈশিষ্ট্য বহির্বিশ্বে পাঠানোর জন্য। OEMগুলি আশ্বস্ত হতে পারে যে ব্যবহারকারীরা যখন অন্য 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);

বাস্তবায়ন

নম্বর-ব্লকিং বৈশিষ্ট্য ব্যবহার করার জন্য এইগুলি উচ্চ-স্তরের কাজগুলি সম্পূর্ণ করতে হবে:

  • OEMs তাদের ডিভাইসে BlockedNumberProvider ব্যবহার করে কল/মেসেজ-সীমাবদ্ধতা বৈশিষ্ট্য প্রয়োগ করে
  • যদি ক্যারিয়ারের ডায়ালার বা মেসেঞ্জার অ্যাপ থাকে, তাহলে BlockedNumberProvider ব্যবহার করে কল/বার্তা সীমাবদ্ধতা বৈশিষ্ট্যগুলি প্রয়োগ করুন
  • তৃতীয় পক্ষের ডায়ালার এবং মেসেঞ্জার অ্যাপ বিক্রেতারা তাদের ব্লক করার বৈশিষ্ট্যগুলির জন্য BlockedNumberProvider ব্যবহার করে

OEMs জন্য সুপারিশ

যদি ডিভাইসটি পূর্বে কোনো অতিরিক্ত কল/মেসেজ সীমাবদ্ধতা বৈশিষ্ট্য সহ শিপিং না করে থাকে, তাহলে এই ধরনের সমস্ত ডিভাইসে Android ওপেন সোর্স প্রজেক্টে (AOSP) নম্বর-ব্লকিং বৈশিষ্ট্যটি ব্যবহার করুন। এটি সুপারিশ করা হয় যে ব্লক করার জন্য যুক্তিসঙ্গত এন্ট্রি পয়েন্টগুলি সমর্থিত, যেমন কল লগ থেকে বা একটি বার্তা থ্রেডের মধ্যে একটি নম্বর ব্লক করা।

যদি ডিভাইসটি আগে কল/মেসেজ সীমাবদ্ধতা বৈশিষ্ট্যগুলির সাথে পাঠানো হয়ে থাকে, তাহলে বৈশিষ্ট্যগুলিকে মানিয়ে নিন যাতে ব্লক করা সমস্ত কঠোর-ম্যাচ ফোন নম্বর BlockedNumberProvider, সংরক্ষণ করা হয় এবং প্রদানকারীর আশেপাশের আচরণ Android সামঞ্জস্যে বর্ণিত এই বৈশিষ্ট্যটির প্রয়োজনীয়তা পূরণ করে। সংজ্ঞা নথি (CDD)।

অন্য যেকোন উন্নত বৈশিষ্ট্য কাস্টম প্রদানকারী এবং কাস্টম UI/নিয়ন্ত্রণের মাধ্যমে প্রয়োগ করা যেতে পারে, যতক্ষণ না CDD প্রয়োজনীয়তাগুলি কঠোর-ম্যাচ ফোন নম্বর ব্লক করার বিষয়ে সন্তুষ্ট হয়। মৌলিক সংখ্যা-ব্লকিং বৈশিষ্ট্যের সাথে বিভ্রান্তি এড়াতে এই অন্যান্য বৈশিষ্ট্যগুলিকে "উন্নত" বৈশিষ্ট্য হিসাবে লেবেল করার সুপারিশ করা হয়৷

এপিআই

এখানে ব্যবহার করা API আছে:

  • TelecomManager API
    • Intent createManageBlockedNumbersIntent()
  • Carrier Config
    • KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT
  • অনুগ্রহ করে BlockedNumberContract দেখুন
    • BlockedNumberContract দ্বারা প্রদত্ত API
    • boolean isBlocked(Context context, String phoneNumber)
    • int unblock(Context context, String phoneNumber)
    • boolean canCurrentUserBlockNumbers(Context context)

ইউজার ইন্টারফেস

AOSP-এ দেওয়া BlockedNumbersActivity.java ইউজার ইন্টারফেসটি ব্যবহার করা যেতে পারে। ডিভাইস বাস্তবায়নকারীরা UI এর নিজস্ব সংস্করণও প্রয়োগ করতে পারে, যতক্ষণ না এটি সম্পর্কিত CDD প্রয়োজনীয়তাগুলিকে সন্তুষ্ট করে।

অনুগ্রহ করে মনে রাখবেন, BlockedNumberProvider ব্যবহার করে ব্লক তালিকা পুনরুদ্ধার বাস্তবায়নের জন্য ব্যাকআপ এবং পুনরুদ্ধারের জন্য অংশীদারের PC অ্যাপের প্রয়োজন হতে পারে। AOSP-এ সরবরাহ করা ব্লক করা নম্বর ইন্টারফেসের জন্য নীচের ছবিগুলি দেখুন।

ব্লক সংখ্যা ব্যবহারকারী ইন্টারফেস

চিত্র 2. ব্লক ফোন নম্বর ব্যবহারকারী ইন্টারফেস

বৈধতা

বাস্তবায়নকারীরা নিশ্চিত করতে পারেন যে তাদের বৈশিষ্ট্যের সংস্করণটি নিম্নলিখিত CTS পরীক্ষা চালিয়ে উদ্দেশ্য অনুযায়ী কাজ করে:

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

BlockedNumberProvider $ adb root চালানোর পর 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