تطبيق حظر رقم الهاتف

ونظرًا لأن الاتصال الهاتفي يعد قناة اتصال مفتوحة، فيمكن لأي شخص الاتصال أو أرسل رسالة نصية إلى أي رقم في أي وقت - يحتاج مستخدمو Android إلى القدرة على حظر المكالمات والرسائل النصية غير المرغوب فيها.

قبل الإصدار Android 7.0، كان على مستخدمي Android الاعتماد على التطبيقات التي تم تنزيلها لتقييد المكالمات الرسائل النصية من أرقام هواتف مزعجة. فالعديد من هذه التطبيقات لا تعمل أو تقديم تجربة أقل من مثالية نظرًا لعدم وجود واجهات برمجة تطبيقات مناسبة لحظر المكالمات والرسائل.

قد توفّر بعض الشركات المصنّعة حلول حظر جاهزة، ولكن في حال تبديل المستخدمين للأجهزة، قد يفقدون القائمة المحظورة بالكامل بسبب عدم توفّر إمكانية التشغيل التفاعلي. وأخيرًا، حتى إذا كان المستخدمون يستخدمون تطبيقات الاتصال برامج المراسلة التي توفر مثل هذه الوظائف، فإنه لا يزال يتعين عليهم على الأرجح تنفيذ إجراء الحظر في كل تطبيق حتى يتم تطبيق الحظر على كلا التطبيقين الاتصال والمراسلة النصية.

الميزات

يقدم إصدار Android 7.0 محتوى BlockedNumberProvider مقدّم خدمة يخزّن قائمة بأرقام الهواتف التي حدّدها المستخدم من الاتصال بهم عبر الاتصالات الهاتفية (المكالمات والرسائل القصيرة SMS ورسائل الوسائط المتعددة). سيراعي النظام الأرقام المدرَجة في القائمة المحظورة من خلال حظر المكالمات والرسائل النصية الواردة من هذه الأرقام. يعرض Android 7.0 قائمة بالأرقام المحظورة يسمح للمستخدم بإضافة الأرقام وإزالتها.

علاوة على ذلك، تتيح ميزة حظر الأرقام للنظام والتطبيقات ذات الصلة على النظام الأساسي للعمل معًا للمساعدة في حماية المستخدم وتبسيط المستخدم. يعد برنامج الاتصال التلقائي وبرنامج المراسلة التلقائي وتطبيق UICC المميز، والتطبيقات التي لديها التوقيع نفسه مثل النظام، يمكنها جميعًا القراءة مباشرةً من كتابتها في قائمة الحظر. نظرًا لتخزين الأرقام المحظورة على النظام، وبغض النظر عن تطبيقات الاتصال أو المراسلة التي يستخدمها المستخدم، تظل الأرقام محظور. أخيرًا، قد تتم استعادة قائمة الأرقام المحظورة على أي جهاز جديد، بغض النظر عن الشركة المصنعة.

  • سيضمن المستخدم توفُّر ميزة حظر تعمل بشكل فوري. ولن يفقد المستخدمين قائمة الحظر عند التبديل بين التطبيقات أو استخدام هاتف جديد. الكل التطبيقات ذات الصلة في النظام مشاركة القائمة نفسها لتزويد المستخدم أكثر سلاسة.
  • لا يحتاج مطوِّرو التطبيقات إلى تطوير طريقتهم الخاصة لإدارة قائمة الحظر. والمكالمات والرسائل الواردة. يمكنهم ببساطة استخدام الميزة المقدمة من النظام الأساسي.
  • يمكن للمستخدم استخدام تطبيقات برنامج الاتصال أو المراسلة التي يحدَّدها المستخدم كإعداد تلقائي القراءة والكتابة إلى المزود. يمكن للتطبيقات الأخرى تشغيل واجهة مستخدم إدارة قائمة الحظر باستخدام createManageBlockedNumbersIntent()
  • يمكن لمصنّعي المعدّات الأصلية استخدام الميزة المقدَّمة من النظام الأساسي لتوفير ميزة حظر بشكل تلقائي. يمكن للمصنّعين الأصليين للأجهزة الاطمئنان إلى أنه عندما يقوم المستخدمون بالتبديل من مصنّع أصلي آخر أن يتمتع بتجربة إعداد أفضل لأن قائمة الحظر ستكون نقلها أيضًا.
  • إذا كان لدى مشغّل شبكة الجوّال تطبيق برنامج اتصال أو مراسلة خاص به، يمكنه إعادة استخدام المنصة. للسماح للمستخدمين بالاحتفاظ بقائمة الحظر. يمكنهم الاطمئنان يمكن أن تظل قائمة الحظر الخاصة بالمستخدم مع قائمة المستخدمين، حتى عند حصولهم على قائمة حظر جديدة الخاص بك. أخيرًا، يمكن لجميع التطبيقات التي يوفرها مشغِّل شبكة الجوّال قراءة قائمة الحظر، وبالتالي إذا يريد مشغِّل شبكة الجوّال توفير وسيلة حظر إضافية أقوى للمستخدمين استنادًا إلى قائمة الحظر، أصبح ذلك ممكنًا الآن مع هذه الميزة.

تدفق البيانات

منع تدفق بيانات الأرقام

الشكل 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);

التنفيذ

هذه هي المهام عالية المستوى التي يجب إكمالها لوضع حظر الأرقام الميزات المراد استخدامها:

  • تُطبِّق المصنّعون الأصليون للأجهزة ميزات حظر المكالمات أو الرسائل على أجهزتهم باستخدام BlockedNumberProvider
  • إذا كان مشغّل شبكة الجوّال لديه تطبيق برنامج اتصال أو مراسلة، يمكنك تنفيذ ميزة الاتصال أو الرسالة. ميزات الحظر باستخدام BlockedNumberProvider
  • يستخدم مورّدو تطبيقات المراسلة التابعة لجهات خارجية وبرامج الاتصال BlockedNumberProvider على ميزات الحظر

اقتراحات للمصنّعين الأصليين للأجهزة

إذا لم يسبق شحن الجهاز مع أي مكالمة/رسالة إضافية تقييد المحتوى، استخدِم ميزة حظر الأرقام في برنامج مفتوح المصدر لنظام Android المشروع (AOSP) على كل هذه الأجهزة. ننصحك بتوفير نقاط دخول معقولة للحظر، مثل حظر رقم مباشرةً من سجلّ المكالمات أو ضمن سلسلة محادثات.

إذا كان قد تم شحن الجهاز سابقًا مع ميزات تقييد المكالمات/الرسائل، تكييف الميزات بحيث تعمل جميع أرقام الهواتف ذات المطابقة التامة المحظورة في BlockedNumberProvider, وأن السلوك حول المزود استيفاء متطلبات هذه الميزة الموضحة في مستند تعريف التوافق مع Android (CDD)

يمكن تطبيق أي ميزة متقدّمة أخرى من خلال مقدّمي خدمة مخصّصين وواجهة مستخدم مخصَّصة. / عناصر التحكم، طالما يتم استيفاء متطلبات CDD في ما يتعلق حظر أرقام الهواتف ذات المطابقة التامة. ولا شكّ في أنّ هذه الميزات الأخرى أن يتم تصنيفها على أنها ميزات "متقدمة" لتجنب حدوث أي التباس مع ميزة حظر الأرقام.

واجهات برمجة التطبيقات

في ما يلي واجهات برمجة التطبيقات المستخدَمة:

  • 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 المتاحة في AOSP كـ الموجودة. ويمكن أيضًا للمستخدمين الذين نفذوا الأجهزة تنفيذ إصداراتهم الخاصة من واجهة المستخدم، ما دامت استيفاء متطلبات CDD ذات الصلة.

ملاحظة: قد تحتاج إلى استخدام تطبيق الكمبيوتر الشخصي الخاص بالشريك للاحتفاظ بنسخة احتياطية من البيانات واستعادتها. استعادة قائمة الحظر باستخدام BlockedNumberProvider يمكنك الاطّلاع على الصور أدناه لمعرفة الأماكن المحظورة المخصصة لأرقام الشبكة المقدمة في 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. بعد تشغيل $ 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