הטמעת מספרי טלפון חסומים

מכיוון שהטלפוניה היא ערוץ תקשורת כל כך פתוח - כל אחד יכול להתקשר או לשלוח הודעות טקסט לכל מספר בכל עת - משתמשי אנדרואיד זקוקים ליכולת לחסום בקלות שיחות והודעות טקסט לא רצויות.

לפני N, משתמשי אנדרואיד נאלצו להסתמך על אפליקציות שהורדו כדי להגביל שיחות והודעות טקסט ממספרי טלפון מטרידים. רבות מהאפליקציות האלה לא עובדות כרצוי או מספקות חוויה פחות אידיאלית מכיוון שאין ממשקי API מתאימים לחסימת שיחות והודעות.

יצרנים מסוימים עשויים לשלוח פתרונות חסימה משלהם מחוץ לקופסה, אבל אם משתמשים מחליפים התקנים, הם עלולים לאבד את הרשימה החסומה לחלוטין בגלל חוסר יכולת פעולה הדדית. לבסוף, גם אם משתמשים מעסיקים אפליקציות חיוג ולקוחות הודעות המספקים פונקציונליות כזו, סביר להניח שהם עדיין צריכים לבצע את פעולת החסימה בכל אפליקציה כדי שהחסימה תיכנס לתוקף הן עבור שיחות והן בהודעות טקסט.

מאפיינים

מהדורת אנדרואיד 7.0 מציגה ספק תוכן BlockedNumberProvider המאחסן רשימה של מספרי טלפון שהמשתמש ציין לא יוכל ליצור איתו קשר באמצעות תקשורת טלפונית (שיחות, SMS, MMS). המערכת תכבד את המספרים ברשימת החסומים על ידי הגבלת שיחות והודעות טקסט מאותם מספרים. אנדרואיד 7.0 מציגה את רשימת המספרים החסומים ומאפשרת למשתמש להוסיף ולהסיר מספרים.

יתרה מכך, תכונת חסימת המספרים מאפשרת למערכת ולאפליקציות הרלוונטיות בפלטפורמה לעבוד יחד כדי לעזור להגן על המשתמש ולפשט את החוויה. חייגן ברירת המחדל, לקוח ברירת המחדל להעברת הודעות, אפליקציה מוסמכת UICC ואפליקציות עם חתימה זהה למערכת יכולים כולם לקרוא ולכתוב ישירות מהרשימה החסומה. מכיוון שהמספרים החסומים מאוחסנים במערכת, לא משנה באילו אפליקציות חיוג או הודעות המשתמש משתמש, המספרים נשארים חסומים. לבסוף, ניתן לשחזר את רשימת המספרים החסומים בכל מכשיר חדש, ללא קשר ליצרן.

  • מובטחת למשתמש תכונת חסימה שפועלת מחוץ לקופסה ולא תאבד את רשימת החסימה שלו כאשר יחליף אפליקציות או יקבל טלפון חדש. כל האפליקציות הרלוונטיות במערכת יכולות לשתף את אותה רשימה כדי לספק למשתמש את החוויה היעיל ביותר.
  • מפתחי אפליקציות לא צריכים לפתח דרך משלהם לנהל רשימת חסימות ואת השיחות וההודעות שמגיעות. הם יכולים פשוט להשתמש בתכונה המסופקת על ידי הפלטפורמה.
  • אפליקציות חייגן/מסנג'ר שנבחרו כברירת מחדל על ידי המשתמש יכולות לקרוא ולכתוב לספק. אפליקציות אחרות יכולות להפעיל את ממשק המשתמש לניהול רשימת חסימות באמצעות createManageBlockedNumbersIntent()
  • יצרני ציוד מקורי יכולים להשתמש בתכונה המסופקת בפלטפורמה כדי לשלוח תכונת חסימה מהקופסה. יצרני 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);

יישום

אלו המשימות ברמה גבוהה שיש להשלים כדי להשתמש בתכונת חסימת המספרים:

  • יצרני 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)

ממשק משתמש

ניתן להשתמש בממשק המשתמש 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