הטלפון הוא ערוץ תקשורת פתוח מאוד – כל אחד יכול להתקשר או לשלוח הודעת טקסט לכל מספר בכל שלב – ולכן משתמשי Android צריכים את היכולת לחסום בקלות שיחות והודעות טקסט לא רצויות.
לפני Android 7.0, משתמשי Android היו צריכים להסתמך על אפליקציות שהורדתם כדי להגביל שיחות והודעות טקסט ממספרי טלפון מטרידים. רבות מהאפליקציות האלה לא פועלות כמצופה או שהחוויה שלהן לא אידיאלית, כי אין ממשקי API מתאימים לחסימת שיחות והודעות.
יצרנים מסוימים עשויים לשלוח פתרונות חסימה משלהם מוכנים לשימוש, אבל אם המשתמשים עוברים למכשיר אחר, יכול להיות שהם יאבדו את רשימת החסימות לגמרי בגלל חוסר יכולת פעולה הדדית. לבסוף, גם אם המשתמשים משתמשים באפליקציות חיוג ובתוכנות שליחת הודעות שמספקות פונקציונליות כזו, סביר להניח שהם עדיין יצטרכו לבצע את פעולת החסימה בכל אפליקציה כדי שהחסימה תיכנס לתוקף גם לשיחות וגם לשליחת הודעות.
תכונות
במהדורה 7.0 של Android נוסף ספק תוכן BlockedNumberProvider
שמאחסן רשימה של מספרי טלפון שהמשתמש ציין שאסור להם ליצור איתו קשר באמצעות תקשורת טלפונית (שיחות, SMS, MMS). המערכת תגביל את השיחות וההודעות הטקסט מהמספרים האלה, בהתאם למספרים שמופיעים ברשימת החסימות. ב-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);
Put blocked number
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
לתכונות החסימה שלהם
המלצות ליצרני ציוד מקורי (OEM)
אם המכשיר לא כלל בעבר תכונות נוספות של הגבלת שיחות או הודעות, צריך להשתמש בתכונה של חסימה של מספרים בפרויקט הקוד הפתוח של Android (AOSP) בכל המכשירים האלה. מומלץ לתמוך בנקודות כניסה סבירות לחסימה, כמו חסימה של מספר ישירות מיומן השיחות או בתוך שרשור של הודעות.
אם המכשיר נשלח בעבר עם תכונות של הגבלת שיחות או הודעות, צריך להתאים את התכונות כך שכל מספרי הטלפון שמוגדרים כ'התאמה מדויקת' שחוסמים יישמרו ב-BlockedNumberProvider,
, ושההתנהגות של הספק תעמוד בדרישות של התכונה הזו שמפורטות במסמך ההגדרה של תאימות ל-Android (CDD).
אפשר להטמיע כל תכונה מתקדמת אחרת באמצעות ספקים מותאמים אישית וממשקי משתמש או אמצעי בקרה מותאמים אישית, כל עוד מתקיימות הדרישות של CDD לגבי חסימה של מספרי טלפון שתואמים באופן מדויק. מומלץ לתייג את התכונות הנוספות האלה בתור 'תכונות מתקדמות' כדי למנוע בלבול עם התכונה הבסיסית של חסימה של מספרים.
ממשקי API
אלה ממשקי ה-API שבשימוש:
TelecomManager API
Intent createManageBlockedNumbersIntent()
Carrier Config
KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT
- אפשר לעיין במאמר
BlockedNumberContract
- ממשקי API שסופקו על ידי
BlockedNumberContract
boolean isBlocked(Context context, String phoneNumber)
int unblock(Context context, String phoneNumber)
boolean canCurrentUserBlockNumbers(Context context)
- ממשקי API שסופקו על ידי
ממשק משתמש
אפשר להשתמש בממשק המשתמש BlockedNumbersActivity.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