מכיוון שהטלפוניה היא ערוץ תקשורת כל כך פתוח - כל אחד יכול להתקשר או לשלוח הודעות טקסט לכל מספר בכל עת - משתמשי אנדרואיד זקוקים ליכולת לחסום בקלות שיחות והודעות טקסט לא רצויות.
לפני N, משתמשי אנדרואיד נאלצו להסתמך על אפליקציות שהורדו כדי להגביל שיחות והודעות טקסט ממספרי טלפון מטרידים. רבות מהאפליקציות האלה לא עובדות כרצוי או מספקות חוויה פחות אידיאלית מכיוון שאין ממשקי API מתאימים לחסימת שיחות והודעות.
יצרנים מסוימים עשויים לשלוח פתרונות חסימה משלהם מחוץ לקופסה, אבל אם משתמשים מחליפים התקנים, הם עלולים לאבד את הרשימה החסומה לחלוטין בגלל חוסר יכולת פעולה הדדית. לבסוף, גם אם משתמשים מעסיקים אפליקציות חיוג ולקוחות הודעות המספקים פונקציונליות כזו, סביר להניח שהם עדיין צריכים לבצע את פעולת החסימה בכל אפליקציה כדי שהחסימה תיכנס לתוקף הן עבור שיחות והן בהודעות טקסט.
מאפיינים
מהדורת אנדרואיד 7.0 מציגה ספק תוכן BlockedNumberProvider
המאחסן רשימה של מספרי טלפון שהמשתמש ציין לא יוכל ליצור איתו קשר באמצעות תקשורת טלפונית (שיחות, SMS, MMS). המערכת תכבד את המספרים ברשימת החסומים על ידי הגבלת שיחות והודעות טקסט מאותם מספרים. אנדרואיד 7.0 מציגה את רשימת המספרים החסומים ומאפשרת למשתמש להוסיף ולהסיר מספרים.
יתרה מכך, תכונת חסימת המספרים מאפשרת למערכת ולאפליקציות הרלוונטיות בפלטפורמה לעבוד יחד כדי לעזור להגן על המשתמש ולפשט את החוויה. חייגן ברירת המחדל, לקוח ברירת המחדל להעברת הודעות, אפליקציה מוסמכת UICC ואפליקציות עם חתימה זהה למערכת יכולים כולם לקרוא ולכתוב ישירות מהרשימה החסומה. מכיוון שהמספרים החסומים מאוחסנים במערכת, לא משנה באילו אפליקציות חיוג או הודעות המשתמש משתמש, המספרים נשארים חסומים. לבסוף, ניתן לשחזר את רשימת המספרים החסומים בכל מכשיר חדש, ללא קשר ליצרן.
- מובטחת למשתמש תכונת חסימה שפועלת מחוץ לקופסה ולא תאבד את רשימת החסימה שלו כאשר יחליף אפליקציות או יקבל טלפון חדש. כל האפליקציות הרלוונטיות במערכת יכולות לשתף את אותה רשימה כדי לספק למשתמש את החוויה היעיל ביותר.
- מפתחי אפליקציות לא צריכים לפתח דרך משלהם לנהל רשימת חסימות ואת השיחות וההודעות שמגיעות. הם יכולים פשוט להשתמש בתכונה המסופקת על ידי הפלטפורמה.
- אפליקציות חייגן/מסנג'ר שנבחרו כברירת מחדל על ידי המשתמש יכולות לקרוא ולכתוב לספק. אפליקציות אחרות יכולות להפעיל את ממשק המשתמש לניהול רשימת חסימות באמצעות
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);
יישום
אלו המשימות ברמה גבוהה שיש להשלים כדי להשתמש בתכונת חסימת המספרים:
- יצרני OEM מיישמים תכונות של הגבלת שיחות/הודעות במכשירים שלהם באמצעות
BlockedNumberProvider
- אם לספק יש יישום חייגן או מסנג'ר, הטמע תכונות של הגבלת שיחות/הודעות באמצעות
BlockedNumberProvider
- ספקי חייגן ואפליקציות מסנג'ר של צד שלישי משתמשים ב-
BlockedNumberProvider
עבור תכונות החסימה שלהם
המלצות ליצרני OEM
אם המכשיר מעולם לא נשלח עם תכונות נוספות של הגבלת שיחות/הודעות, השתמש בתכונת חסימת המספרים בפרויקט הקוד הפתוח של Android (AOSP) בכל המכשירים הללו. מומלץ לתמוך בנקודות כניסה סבירות לחסימה, כגון חסימת מספר ישירות מיומן השיחות או בתוך שרשור הודעות.
אם המכשיר נשלח בעבר עם תכונות של הגבלת שיחות/הודעות, התאימו את התכונות כך שכל מספרי הטלפון החסומים בהתאמה קפדנית יאוחסנו ב- BlockedNumberProvider,
ושההתנהגות סביב הספק תעמוד בדרישות לתכונה זו המתוארת ב-Android Compatibility מסמך הגדרה (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.
מַתַן תוֹקֵף
המיישמים יכולים להבטיח שהגרסה שלהם של התכונה פועלת כמתוכנן על ידי הפעלת מבחני ה-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