מודול CellBroadcast מצמצם את המאמצים החוזרים של יצרני ציוד מקורי (מה שמצמצם בתורו את הפיצול במערכת האקולוגית של Android ומספק התנהגות עקבית למשתמשי הקצה), ועוזר לייעל את הבדיקות והאישורים של ספקי הסלולר לגבי דרישות שקשורות ל-CellBroadcast (כי יצרני ציוד מקורי לא יכולים לשנות את הקוד). המודול הזה ניתן לעדכון, כלומר הוא יכול לקבל עדכונים לפונקציונליות שלו מחוץ למחזור הרגיל של מהדורות Android.
פורמט החבילה
מודול CellBroadcast כולל את השירות והאפליקציה הבאים.
השירות CellBroadcastService תומך בפענוח של הודעות SMS בשיטת Cell Broadcast, בגידור גיאוגרפי להתראות חירום אלחוטיות (WEA) 3.0, בבדיקות של כפילויות בהודעות ובשידור של הודעות לאפליקציות. זהו שירות הודעות ממוקד גיאוגרפית ומוגבל גיאוגרפית, שנועד לשלוח הודעות לכמה משתמשים בטלפונים ניידים באזור מוגדר, בו-זמנית. השירות מוגדר על ידי ועדת ה-GSM של ETSI, 3GPP, והוא חלק מתקני הטלקומוניקציה.
האפליקציה CellBroadcastReceiver היא אפליקציית מערכת שמוגדרת כברירת מחדל ומטפלת בהתראות על מצבי חירום ובהתראות אחרות (כמו התראות על ילדים נעדרים והתראות נשיאותיות), ומציגה את המידע למשתמשי הקצה על סמך התקנות של הספק והאזור.
תהליך העבודה של הודעות בשידור סלולרי
באיור הבא מוצג תהליך העברת ההודעה ב-CellBroadcast.
איור 1. תהליך העברת הודעות ב-CellBroadcastReceiver
שכבת ממשק הרדיו (RIL) שולחת ל-
InBoundSMSHandler
הודעה על SMS מסוג CellBroadcast ב-CDMA/GSM.ה-framework מעביר את ה-SMS של השידור הסלולרי למודול ה-CBS כדי לנתח ולעבד את ההודעה הנכנסת.
אחרי שההודעה מעובדת, CellBroadcastService מעביר את ה-Intent לאפליקציית ברירת המחדל של המערכת CellBroadcastReceiver.
האפליקציה CellBroadcastReceiver מציגה את ההודעה למשתמש.
פורמט המודול
האפליקציות CellBroadcastService ו-CellBroadcastReceiver כלולות בקובץ APEX אחד (com.android.cellbroadcast
), שזמין למכשירים עם Android 11 ואילך. המודול כולל קוד ב-package/app/CellBroadcastReceiver
ומעביר מחלקות קיימות של framework ל-packages/modules/CellBroadcastService
.
יחסי תלות בין מודולים
מודול CellBroadcast מקיים אינטראקציה עם המסגרת באמצעות ממשקי API יציבים בלבד @SystemApi
(לא ממשקי API של @hide
) ותלוי בספריות הסטטיות הבאות.
Androidx.legacy_legacy-support-v13
Androidx.recyclerview_recyclerview
Androidx.preference_preference
androidx.legacy_legacy-preference-v14
androidx.appcompat_appcompat
אפשר להתאים אישית את ההגדרות באמצעות שכבות-על של משאבים בזמן ריצה (RRO).
הגדרת הרשאות
מודול CellBroadcast חתום בחתימה של Google במקום בחתימת פלטפורמה, מה שאומר שהמודול מאבד את הגישה להרשאות חתימה.
במקום זאת, ב-Android 11 מוגדרת הרשאת החתימה החדשה com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
בתוך מודול CellBroadcast. רק חבילות במודול יכולות לקבל את ההרשאה כי הן חתומות באותו מפתח. ההרשאה הזו מאפשרת לאפליקציית CellBroadcastReceiver גישה מלאה למסד הנתונים בתוך CellBroadcastService.
הפלטפורמה מעניקה לאפליקציית ה-SMS של המערכת שמוגדרת כברירת מחדל את הרשאת זמן הריצה android.permission.READ_CELL_BROADCASTS
לגישה להיסטוריה של התראות החירום.
הטמעה של מודול CellBroadcast
בקטע הזה מוסבר איך לשלב את מודול CellBroadcast.
הטמעה בהגדרות
אתם יכולים להחליט איפה לשלב את ההגדרות של CellBroadcast באפליקציית ההגדרות (משתמשי הקצה ניגשים לדף ההגדרות של CellBroadcast דרך הגדרות > אפליקציות והתראות > אפשרויות מתקדמות > התראת חירום). כדי להפעיל את האפליקציה CellBroadcastReceiver מתוך אפליקציית ההגדרות, משנים את הגדרות התצורה הבאות עם שם החבילה com.android.cellbroadcastreceiver
.
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>
שילוב עם אפליקציות לשליחת הודעות
אפשר לשלב קישור לאפליקציה באפליקציות להעברת הודעות כדי לפתוח את היסטוריית ההודעות של CellBroadcast. באפליקציית ההודעות ל-Android, האפשרות הזו משולבת בהגדרות > מתקדם > התרעות חירום. כדי לשלב קישור באפליקציית הודעות משלכם, צריך להגדיר את הנתיב באפליקציית ההודעות ולקבוע את שם הרכיב של מודול CellBroadcast כ-com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
.
אינטגרציה עם תיבת דואר נכנס של SMS
כדי להציג הודעות CellBroadcast באפליקציית ההודעות שמוגדרת כברירת מחדל, צריך לשנות את ההגדרה הבאה באמצעות שכבת-על של משאב בזמן ריצה.
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
מתן הרשאות לא נכלל בהיקף של מודול CellBroadcast, ולכן צריך לתת למודול CellBroadcast את ההרשאה AppOpsManager.OP_WRITE_SMS
כדי לספק תמיכה מקצה לקצה. למידע על הטמעה לדוגמה ב-AOSP, אפשר לעיין בתיקון SmsApplication.java
הזה.
הפעלת האפליקציה CellBroadcastReceiver
אפליקציית CellBroadcastReceiver כוללת את נקודות ההפעלה הבאות.
תפריט אפליקציית ההגדרות.
אפליקציה (כולל אפליקציות של צד שלישי) כמו אפליקציית הודעות שמקושרת להיסטוריית ההודעות של CellBroadcast.
(אופציונלי) סמל הפעלה ממסך הבית של Android שנוסף על ידי יצרן הציוד המקורי. פרטים נוספים זמינים במאמר בנושא הוספת סמל להפעלה.
הגדרות של אפליקציית CellBroadcastReceiver
בצילומי המסך הבאים מוצג תפריט ההגדרות של אפליקציית CellBroadcastReceiver.
איור 2. תפריט ההגדרות של אפליקציית CellBroadcastReceiver
איור 3. מסך ההיסטוריה של התרעות החירום
הוספת סמלי הפעלה
אתם יכולים להפעיל גישה להיסטוריית ההודעות של CellBroadcast ממפעיל האפליקציות ועל ידי סמלי הפעלה משלכם.
כדי לאפשר גישה להיסטוריית השיחות ממפעיל האפליקציות, צריך לבטל את ההגדרה הבאה באמצעות RRO.
<item type="bool" name="show_message_history_in_launcher" />
כדי לשנות את סמל ברירת המחדל של AOSP, משנים את ההגדרה הבאה באמצעות RRO.
<!-- Customize launcher icon for cellbroadcast history --> <item type="mipmap" name="ic_launcher_cell_broadcast" />
הפעלת הקוד הסודי של CMAS
כדי להפעיל את הקוד הסודי של CMAS, *#*#CMAS#*#* (*#*#2627#*#* בלוח המקשים), אפליקציית החייגן צריכה להאזין לקוד החייגן המיוחד בתבנית *#*#code#*#* ולטפל בקוד באמצעות השיטה הציבורית sendDialerSpecialCode
.
דרישה למידע על האזור: ערוץ 50
ערוץ 50 הוא ערוץ מיוחד שספקי סלולר יכולים לשדר בו מידע שקשור לאזור (למעט MTN בדרום אפריקה). בערוץ הזה, הודעות שידור לא יוצרות חלון דו-שיח או התראה. במקום זאת, הודעות שידור מופיעות בסטטוס ה-SIM בתפריט ההגדרות או בסרגל הסטטוס (לדוגמה, מוצג מיקוד).
ההטמעה של Android CellBroadcastService מספקת תמיכה בממשקי ה-API הבאים בשירות Cell Broadcast, כדי שאפליקציות ההגדרות ו-SysUI יוכלו לקבל את המידע על ערוץ השידור 50. כדי להטמיע את השינוי הזה:
רישום שידור
android.telephony.action.AREA_INFO_UPDATED
וביטול ברירת המחדל של שם חבילת המקלטconfig_area_info_receiver_packages
באמצעות RRO.קישור אל
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
.
מכיוון שהאפליקציות Settings ו-SysUI לא נכללות בהיקף של מודול CellBroadcast, צריך להטמיע את השינויים באפליקציית SystemUI או באפליקציית ההגדרות כדי לספק תמיכה מקצה לקצה. למידע על הטמעה לדוגמה, אפשר לעיין בהגדרות של אפליקציית CellBroadcastService.
התאמה אישית
אי אפשר לשנות ישירות את קוד המקור של מודול CellBroadcast, אבל אפשר להשתמש בשכבות-על של משאבים בזמן ריצה (RRO) כדי להפעיל (או להשבית) פרמטרים (לדוגמה, אפשר להתאים אישית את הצבע של ההתראות ואת המידות של תיבות הדו-שיח). כדי לשנות את ערכי ברירת המחדל של הפרמטרים שמשמשים במודול CellBroadcast, משנים את שם חבילת היעד ל-com.android.cellbroadcastreceiver
. בנוסף:
רשימה של הגדרות שאפשר להחיל עליהן שכבת-על מופיעה במאמר
overlayable.xml
.דוגמה להטמעה מופיעה ב-
RROSampleTestApp
ב-AOSP.
אם בהטמעה חסרים משאבי תרגום של מחרוזות בממשק המשתמש, או אם התרגומים לא עומדים בציפיות שלכם, אתם יכולים לבטל את משאבי התרגום באמצעות RRO או לעבוד עם צוות התרגום של Google כדי להעביר תרגומים של מחרוזות למודול CellBroadcast. אם עוקפים את משאבי התרגום, Google צריכה לחשוף את המחרוזות האלה ב-overlayable.xml
כדי לאפשר עקיפה. אם אתם צריכים עוד הגדרות להתאמה אישית של ממשק המשתמש, אתם יכולים לפנות אל קבוצת התמיכה של CellBroadcast.
העבר נתונים
Android 11 כולל אפליקציית CellBroadcast מדור קודם, שהיא מנגנון לשמירה ולהעברה של נתוני אפליקציות (כולל הגדרות משתמש והיסטוריות של התראות חירום) למכשירים שמשדרגים למודול CellBroadcast. הטמעות של Android שמשתמשות במודול CellBroadcast צריכות לכלול בגרסה שלהן את אפליקציית CellBroadcast מדור קודם לצורך העברת נתונים. אם ההטמעה שלכם משתמשת בפתרון מותאם אישית לשידור תאים, אתם צריכים להגדיר APK של CellBroadcastContentProvider כדי לשמור את הנתונים (אפשר להסיר בבטחה את ה-APK של שידור התאים מדור קודם בגרסה הבאה).
במכשירים ששודרגו לשימוש במודול CellBroadcast, המודול מאחזר נתונים מ-AOSP LegacyCellBroadcastApp או מ-CellBroadcastContentProvider APK שהוגדר על ידי יצרן הציוד המקורי (OEM), באמצעות הרשות cellbroadcast-legacy
שהוגדרה היטב.
שימוש ב-APK של CellBroadcastContentProvider שמוגדר על ידי יצרן ציוד מקורי
כשמגדירים APK של CellBroadcastContentProvider, ה-APK צריך לעמוד במפרטים האלה.
קובץ ה-APK הוא קובץ headless שמציג רק את התוכן של מסד הנתונים שלו ושל
SharedPreferences
דרך אובייקטContentProvider
עם הרשאהcellbroadcast-legacy
, ולא ניתן לגשת אליו מאפליקציות של צד שלישי.קובץ ה-APK מפותח ונמצא בבעלות יצרן הציוד המקורי (OEM), והיצרן יכול להמשיך לארח את סכימת ה-API המוסתרת שלו.
כדי להעביר את SharedPreferences
למודול CellBroadcast, קובץ ה-APK של CellBroadcastContentProvider צריך לתמוך בשיטה ContentProvider.call
) עם הפרמטרים הבאים:
- רשות:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- שיטה:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
ארגומנט:
@SystemAPI CellBroadcast.Preference
זוהי רשימה של מפתחות העדפות משותפות נתמכים עבור מודול CellBroadcast. הנתונים מגיעים מ-
SharedPreferences
עבור השיטהContentProvider.call
.
כדי להעביר את היסטוריית ההודעות למודול CellBroadcast, קובץ ה-APK של CellBroadcastContentProvider צריך לתמוך בשיטה ContentProvider.query
עם הפרמטרים הבאים:
- רשות:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. בעמודות של השאילתה מפורטים מאפייני ההודעות הנתמכים במודול CellBroadcast. מקבל נתונים (מהמסד נתונים שלכם) עבור ה-methodContentProvider.query
.
למידע על הטמעה לדוגמה של CellBroadcastContentProvider,
, אפשר לעיין במאמר LegacyCellBroadcastContentProvider
.
בדיקה
חבילת הבדיקות לתאימות (CTS) של Android מאמתת את הפונקציונליות של ממשקי API של המערכת שתלויים באפליקציה. אפשר גם להפעיל את מודול CellBroadcast
unit tests/testappsp
.
אם יצרן הציוד המקורי הפעיל את קוד הסודי של CMAS במכשיר, המכשיר הזה יכול לתמוך במצב ניפוי באגים עם התכונות הבאות.
התראות בדיקה מקובצות בקטע התראות אחרות עם מתג הפעלה/השבתה.
ההיסטוריה כוללת את כל ההודעות שהתקבלו אבל לא הוצגו, כמו הודעות כפולות או הודעות בשפה אחרת.
בהודעות מוצגים כל הפרמטרים הזמינים, כולל מספר סידורי, מזהה הודעה ותאריך תפוגה.
כדי להפעיל את מצב ניפוי הבאגים, מחייגים *#*#CMAS#*#* בחייגן.
איש/אשת הקשר
לפרטים נוספים או לשאלות לגבי מודול CellBroadcast, אפשר לפנות אל קבוצת התמיכה של CellBroadcast.