টেলিফোনি যেহেতু একটি উন্মুক্ত যোগাযোগ চ্যানেল - যেকোনও ব্যক্তি যেকোনও সময় যেকোনও নম্বরে কল বা টেক্সট মেসেজ পাঠাতে পারেন - Android ব্যবহারকারীদের অবাঞ্ছিত কল ও টেক্সট মেসেজ সহজে ব্লক করার ক্ষমতা থাকতে হবে।
Android 7.0-এর আগে, Android ব্যবহারকারীদের বিরক্তিকর ফোন নম্বর থেকে কল এবং টেক্সট সীমাবদ্ধ করার জন্য ডাউনলোড করা অ্যাপের উপর নির্ভর করতে হতো। এইসব অ্যাপের মধ্যে অনেক অ্যাপ হয় প্রত্যাশিতভাবে কাজ করে না অথবা কল ও মেসেজ ব্লক করার জন্য উপযুক্ত API না থাকার কারণে আদর্শ অভিজ্ঞতার থেকে কম অভিজ্ঞতা প্রদান করে।
কিছু প্রস্তুতকারক তাদের নিজস্ব ব্লকিং সলিউশন বক্সের বাইরে শিপ করতে পারে, কিন্তু ব্যবহারকারীরা ডিভাইস পরিবর্তন করলে, ইন্টারঅপারেবিলিটি না থাকার কারণে তারা ব্লক করা তালিকাটি সম্পূর্ণভাবে হারিয়ে ফেলতে পারে। অবশেষে, ব্যবহারকারীরা এমন ডায়ালিং অ্যাপ এবং মেসেজিং ক্লায়েন্ট ব্যবহার করলেও, তাদের সম্ভবত এখনও প্রতিটি অ্যাপে ব্লক করার অ্যাকশন পারফর্ম করতে হবে যাতে কল করা এবং টেক্সট মেসেজ পাঠানো, দুটি ক্ষেত্রেই ব্লক করার সুবিধা প্রযোজ্য হয়।
ফিচার
Android 7.0 রিলিজের মাধ্যমে BlockedNumberProvider কন্টেন্ট প্রোভাইডার
পরিচয় করানো হয়েছে যা ব্যবহারকারীর নির্দিষ্ট করা ফোন নম্বরের তালিকা স্টোর করে রাখে।
এইসব নম্বরের মাধ্যমে টেলিফোনি কমিউনিকেশন (কল, এসএমএস, এমএমএস) করা যাবে না। সিস্টেম
ব্লক করা তালিকার নম্বরগুলিকে সম্মান করবে এবং সেই নম্বরগুলি থেকে কল এবং
টেক্সট সীমাবদ্ধ করবে। Android 7.0 ব্লক করা নম্বরের তালিকা দেখায় এবং
ব্যবহারকারীকে নম্বর যোগ করতে ও সরাতে দেয়।
এছাড়াও, নম্বর ব্লক করার ফিচারটি সিস্টেম এবং প্ল্যাটফর্মের প্রাসঙ্গিক অ্যাপগুলিকে একসাথে কাজ করতে সক্ষম করে যাতে ব্যবহারকারীকে সুরক্ষিত রাখতে এবং অভিজ্ঞতাকে সহজ করতে সাহায্য করা যায়। ডিফল্ট ডায়ালার, ডিফল্ট মেসেজিং ক্লায়েন্ট, UICC-বিশেষ অ্যাপ এবং সিস্টেমের মতো একই সিগনেচার সহ অ্যাপগুলি সবই সরাসরি ব্লক করা তালিকা থেকে পড়তে এবং সেখানে লিখতে পারে। যেহেতু ব্লক করা নম্বরগুলি সিস্টেমে সেভ করা থাকে, ব্যবহারকারী যে ডায়ালিং বা মেসেজিং অ্যাপ ব্যবহার করুন না কেন, নম্বরগুলি ব্লক করা থাকে। অবশেষে, প্রস্তুতকারক নির্বিশেষে, যেকোনও নতুন ডিভাইসে ব্লক করা নম্বরের তালিকা রিস্টোর করা হতে পারে।
- ব্যবহারকারীকে ব্লক করার এমন ফিচার ব্যবহারের গ্যারেন্টি দেওয়া হবে যা আউট-অফ-দ্য-বক্স কাজ করে এবং অ্যাপ পরিবর্তন করলে বা নতুন ফোন কিনলে তার ব্লক লিস্ট হারিয়ে যাবে না। সিস্টেমের সব প্রাসঙ্গিক অ্যাপ ব্যবহারকারীকে সবচেয়ে স্ট্রিমলাইন করা অভিজ্ঞতা প্রদান করতে একই তালিকা শেয়ার করতে পারে।
- অ্যাপ ডেভেলপারদের ব্লক করা তালিকা এবং কল ও মেসেজ ম্যানেজ করার জন্য নিজস্ব পদ্ধতি ডেভেলপ করতে হবে না। তারা সহজেই প্ল্যাটফর্মের প্রদান করা ফিচার ব্যবহার করতে পারবে।
- ব্যবহারকারী ডিফল্ট হিসেবে বেছে নিয়েছেন এমন ডায়ালার / মেসেঞ্জার অ্যাপ
প্রোভাইডারে পড়তে ও লিখতে পারে। অন্যান্য অ্যাপ ব্লক তালিকা ম্যানেজমেন্ট
ইউজার ইন্টারফেস লঞ্চ করতে পারে, এর জন্য
createManageBlockedNumbersIntent() - OEM প্ল্যাটফর্মের প্রদান করা ফিচার ব্যবহার করে বক্সের বাইরে ব্লকিং ফিচার শিপ করতে পারে। 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);
প্রয়োগ
নম্বর ব্লক করার ফিচার ব্যবহার করতে হলে, আপনাকে এইসব হাই-লেভেল টাস্ক সম্পূর্ণ করতে হবে:
- OEM-গুলি
BlockedNumberProviderব্যবহার করে তাদের ডিভাইসে কল/মেসেজ-সীমাবদ্ধতা ফিচার প্রয়োগ করে - পরিষেবা প্রদানকারীর ডায়ালার বা মেসেঞ্জার অ্যাপ থাকলে,
BlockedNumberProviderব্যবহার করে কল/মেসেজ বিধিনিষেধ ফিচার প্রয়োগ করুন - থার্ড-পার্টি ডায়ালার এবং মেসেঞ্জার অ্যাপ ভেন্ডররা তাদের ব্লকিং ফিচারের জন্য
BlockedNumberProviderব্যবহার করে
OEM-এর জন্য সাজেশন
ডিভাইসে আগে কখনও অতিরিক্ত কল/মেসেজ বিধিনিষেধ ফিচার শিপ করা না হয়ে থাকলে, এই ধরনের সব ডিভাইসে Android ওপেন সোর্স প্রোজেক্টে (AOSP) নম্বর-ব্লকিং ফিচার ব্যবহার করুন। ব্লক করার জন্য যুক্তিসঙ্গত এন্ট্রি পয়েন্ট ব্যবহার করার সাজেশন দেওয়া হয়, যেমন কল লগ থেকে বা মেসেজ থ্রেডের মধ্যে থেকে কোনও নম্বর ব্লক করা।
ডিভাইসটি আগে কল/মেসেজ সীমাবদ্ধ করার ফিচার সহ শিপ করা হলে,
ফিচারগুলি এমনভাবে অ্যাডাপ্ট করুন যাতে ব্লক করা সব স্ট্রিক্ট-ম্যাচ ফোন নম্বর
BlockedNumberProvider,-এ সেভ করা থাকে এবং প্রদানকারীর
আচরণ Android-এর
কম্প্যাটিবিলিটি ডেফিনিশন ডকুমেন্টে (CDD) উল্লেখ করা এই ফিচারের প্রয়োজনীয়তা পূরণ করে।
কাস্টম প্রদানকারী ও কাস্টম UI / কন্ট্রোলের মাধ্যমে অন্য যেকোনও উন্নত ফিচার প্রয়োগ করা যেতে পারে, তবে CDD সংক্রান্ত প্রয়োজনীয়তা পূরণ করতে হবে এবং স্ট্রিক্ট-ম্যাচ ফোন নম্বর ব্লক করতে হবে। নম্বর ব্লক করার প্রাথমিক ফিচারের সাথে যাতে বিভ্রান্তি না হয়, তাই অন্যান্য ফিচারকে "উন্নত" ফিচার হিসেবে লেবেল করার সাজেশন দেওয়া হয়।
এপিআই
এখানে ব্যবহার করা API-এর তালিকা দেওয়া হল:
TelecomManager APIIntent createManageBlockedNumbersIntent()
Carrier ConfigKEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT
-
BlockedNumberContract- দেখুন
BlockedNumberContract-এর প্রদান করা APIboolean isBlocked(Context context, String phoneNumber)int unblock(Context context, String phoneNumber)boolean canCurrentUserBlockNumbers(Context context)
ইউজার ইন্টারফেস
AOSP-তে প্রদত্ত BlockedNumbersActivity.java ইউজার ইন্টারফেসটি যেমন আছে তেমন ব্যবহার করা যেতে পারে। ডিভাইস ইমপ্লিমেন্টাররা UI-এর নিজস্ব ভার্সনও ইমপ্লিমেন্ট করতে পারেন, তবে সেটি যেন সম্পর্কিত CDD প্রয়োজনীয়তা পূরণ করে।
মনে রাখবেন, BlockedNumberProvider ব্যবহার করে ব্লক লিস্ট রিস্টোর করার জন্য
পার্টনারের পিসি অ্যাপের মাধ্যমে ব্যাক-আপ নেওয়া ও ফিরিয়ে আনার সুবিধা
প্রয়োজন হতে পারে। AOSP-তে দেওয়া ব্লক করা
নম্বর ইন্টারফেসের জন্য নিচের ছবিগুলি দেখুন।
ছবি ২. ফোন নম্বর ব্লক করার ইউজার ইন্টারফেস
যাচাইকরণ
ইমপ্লিমেন্টাররা নিম্নলিখিত CTS টেস্ট রান করে নিশ্চিত করতে পারেন যে তাদের ভার্সনের ফিচারটি উদ্দেশ্য অনুযায়ী কাজ করছে:
android.provider.cts.BlockedNumberContractTest com.android.cts.numberblocking.hostside.NumberBlockingTest android.telecom.cts.ExtendedInCallServiceTest#testIncomingCallFromBlockedNumber_IsRejected android.telephony.cts.SmsManagerTest#testSmsBlocking
$ adb root চালানোর পরে adb কমান্ড ব্যবহার করে BlockedNumberProvider ম্যানিপুলেট করা যেতে পারে
। যেমন:
adb rootadb shell content query --uri content://com.android.blockednumber/blockedadb 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