המודול של CellBroadcast מפחית את המאמצים החוזרים ונשנים של יצרני ציוד מקורי (OEM) (וכך מפחית את הפיצול בסביבה העסקית של Android ומספק התנהגות עקבית למשתמשי הקצה), ועוזר לייעל את בדיקות הספקים ואת תהליך האישור שלהם בהתאם לדרישות שקשורות ל-CellBroadcast (כי יצרני ציוד מקורי לא יכולים לשנות את הקוד). המודול הזה ניתן לעדכון, כלומר הוא יכול לקבל עדכונים בפונקציונליות מחוץ למחזור הגרסאות הרגיל של Android.
פורמט החבילה
המודול CellBroadcast מורכב מהשירות והאפליקציה הבאים.
השירות CellBroadcastService תומך בפענוחים של הודעות SMS מסוג CellBroadcast, ביצירת אזורי הגנה גיאוגרפית להתרעות חירום אלחוטיות (WEA) 3.0, בבדיקות של כפילויות של הודעות ובשידור הודעות לאפליקציות. זהו שירות העברת הודעות עם טירגוט גיאוגרפי אחד לרבים, עם גבולות וירטואליים. השירות נועד להעביר הודעות למספר משתמשים בטלפונים ניידים, באזור מוגדר, בו-זמנית. השירות מוגדר על ידי ועדת ה-GSM של ETSI, 3GPP, והוא חלק מהתקנים של טלקומוניקציה.
אפליקציית CellBroadcastReceiver היא אפליקציית ברירת מחדל למערכת שמטפלת בהתראות חירום ובהתראות אחרות (כמו התראות חירום לילדים או התראות נשיאותיות) ומציגה את המידע למשתמשי הקצה בהתאם לתקנות של הספק ושל האזור.
תהליך שליחת הודעות CellBroadcast
באיור הבא מוצג תהליך העברת ההודעות ב-CellBroadcast.
איור 1. תהליך העברת ההודעות ב-CellBroadcastReceiver
שכבת ממשק הרדיו (RIL) מעדכנת את
InBoundSMSHandler
על הודעת SMS של CellBroadcast ב-CDMA/GSM.ה-framework מעביר את ה-SMS של השידור הסלולרי למודול ה-CBS כדי לנתח ולעבד את ההודעה הנכנסת.
לאחר עיבוד ההודעה, Cell BroadcastService מעבירה את הכוונה לאפליקציית ברירת המחדל של המערכת Cell BroadcastReceiver.
אפליקציית CellBroadcastReceiver מציגה את ההודעה למשתמש.
פורמט המודול
השירות CellBroadcastService והאפליקציה CellBroadcastReceiver כלולים בקובץ APEX יחיד (com.android.cellbroadcast
), שזמין במכשירים עם Android מגרסה 11 ואילך. המודול כולל קוד ב-package/app/CellBroadcastReceiver
ומעביר את המחלקות הקיימות של framework אל packages/modules/CellBroadcastService
.
יחסי תלות של מודולים
המודול CellBroadcast יוצר אינטראקציה עם המסגרת באמצעות @SystemApi
יציב בלבד (ללא ממשקי @hide
API), והוא תלוי בספריות הסטטיות הבאות.
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
בקטע הזה מוסבר איך לשלב את מודול Cell Broadcast.
שילוב עם ההגדרות
אתם יכולים להחליט איפה לשלב את ההגדרות של CellBroadcast באפליקציית ההגדרות (משתמשי הקצה ניגשים לדף ההגדרות של CellBroadcast דרך הגדרות > אפליקציות והתראות > מתקדם > התראת חירום). כדי להפעיל את האפליקציה CellBroadcastReceiver מאפליקציית ההגדרות, משנים את הגדרות ההגדרה הבאות עם שם החבילה com.android.cellbroadcastreceiver
.
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>
שילוב עם אפליקציות לשליחת הודעות
אפשר לשלב קישור לאפליקציה באפליקציות העברת הודעות כדי לפתוח את היסטוריית ההודעות של Cell Broadcast. באפליקציית Android Messaging, התכונה הזו משולבת בהגדרות > מתקדם > התראת חירום. כדי לשלב קישור באפליקציית הודעות משלכם, צריך להגדיר את הנתיב באפליקציית ההודעות ולהגדיר את שם הרכיב של מודול Cell Broadcast בתור com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
.
שילוב עם תיבת הדואר הנכנס של הודעות SMS
כדי להציג הודעות CellBroadcast באפליקציית ההודעות שמוגדרת כברירת מחדל, אפשר לשנות את ההגדרה הבאה באמצעות שכבת-על של משאבים בסביבת זמן ריצה.
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
הקצאת הרשאות היא מחוץ להיקף המודול CellBroadcast, ולכן צריך להקצות את ההרשאה AppOpsManager.OP_WRITE_SMS
למודול CellBroadcast כדי לספק תמיכה מקצה לקצה. להטמעה של 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 Cell BroadcastService מספקת תמיכה לממשקי ה-API הבאים בשירות השידור הסלולרי, עבור ההגדרות והאפליקציות של SysUI כדי לקבל את המידע של ערוץ 50 המשודר. כדי להטמיע את זה:
רישום השידור
android.telephony.action.AREA_INFO_UPDATED
ושינוי שם החבילה של המקבלconfig_area_info_receiver_packages
באמצעות RRO.קישור אל
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
.
מכיוון שההגדרות ואפליקציות SysUI מחוץ למסגרת המודול של Cell Broadcast, עליך לבצע את השינויים ב-SystemUI או באפליקציית ההגדרות כדי לספק תמיכה מקצה לקצה. להטמעה לדוגמה, אפשר לעיין באפליקציית ההגדרות של CellBroadcastService.
התאמה אישית
לא ניתן לשנות באופן ישיר את קוד המקור של מודול Cell Broadcast, אבל אפשר להשתמש בשכבות-על של משאבים בזמן ריצה (RRO) כדי להפעיל (או להשבית) פרמטרים (לדוגמה, ניתן להתאים אישית את הצבע של ההתראות והמאפיינים בתיבות דו-שיח). כדי לשנות את ערכי ברירת המחדל של הפרמטרים שבהם נעשה שימוש במודול CellBroadcast, משנים את שם חבילת היעד ל-com.android.cellbroadcastreceiver
. בנוסף:
רשימה של הגדרות שאפשר להוסיף שכבה עליונה עליהן מופיעה במאמר
overlayable.xml
.דוגמה להטמעה מופיעה ב-
RROSampleTestApp
ב-AOSP.
אם בהטמעה חסרים משאבי תרגום של מחרוזות בממשק המשתמש, או אם התרגומים לא עומדים בציפיות שלכם, תוכלו לשנות את משאבי התרגום באמצעות RRO או לעבוד עם צוות התרגום של Google כדי להעביר את תרגומי המחרוזות למעלה למודול CellBroadcast. אם תבחרו לשנות את משאבי התרגום, Google תצטרך לחשוף את המחרוזות האלה ב-overlayable.xml
כדי לאפשר שינוי. אם אתם צריכים הגדרות נוספות להתאמה אישית של ממשק המשתמש, תוכלו לפנות אל קבוצת התמיכה של CellBroadcast.
העבר נתונים
גרסת Android 11 כוללת אפליקציית CellBroadcast מדור קודם, שמשמשת כמנגנון לשמירה ולהעברה של נתוני האפליקציה (כולל הגדרות המשתמש והיסטוריות של התראות חירום) במכשירים שמשודרגים למודול CellBroadcast. בהטמעות של Android שמשתמשות במודול Cell Broadcast, צריך לכלול ב-build של האפליקציה את הגרסה הקודמת של Cell Broadcast להעברת נתונים. אם ההטמעה שלכם משתמשת בפתרון מותאם אישית של CellBroadcast, עליכם להגדיר קובץ APK של CellBroadcastContentProvider כדי לשמור את הנתונים (אפשר להסיר בבטחה את קובץ ה-APK הקודם של CellBroadcast במהדורה הבאה).
במכשירים ששודרגו לשימוש במודול CellBroadcast, המודול מאחזר נתונים מ-AOSP LegacyCellBroadcastApp או מ-CellBroadcastContentProvider APK שהוגדר על ידי יצרן הציוד המקורי (OEM) דרך הרשות המוגדרת היטב cellbroadcast-legacy
.
שימוש בקובץ APK של CellBroadcastContentProvider שהוגדר על ידי יצרן ציוד מקורי
כשמגדירים APK של Cell BroadcastContentProvider, ה-APK חייב לעמוד במפרטים האלה.
ה-APK הוא APK ללא ממשק משתמש שמוצגים בו רק התוכן של מסד הנתונים שלו ושל
SharedPreferences
דרך אובייקטContentProvider
עם ההרשאהcellbroadcast-legacy
, ואין לאפליקציות של צד שלישי גישה אליו.ה-APK פותח ונמצא בבעלות ה-OEM, שם ה-OEM יכול להמשיך לארח את סכימת ה-API המוסתרת שלו.
כדי להעביר את SharedPreferences
למודול CellBroadcast, קובץ ה-APK של CellBroadcastContentProvider צריך לתמוך בשיטה ContentProvider.call
עם הפרמטרים הבאים:
- רשות:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- שיטה:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
Arg:
@SystemAPI CellBroadcast.Preference
זוהי רשימה של מפתחות של העדפות משותפות שנתמכים במודול CellBroadcast. הנתונים מגיעים מ-
SharedPreferences
בשיטהContentProvider.call
.
כדי להעביר את היסטוריית ההודעות למודול CellBroadcast, קובץ ה-APK של CellBroadcastContentProvider צריך לתמוך ב-method ContentProvider.query
עם הפרמטרים הבאים:
- סמכות:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. עמודות של שאילתות מציגות את המאפיינים הנתמכים של הודעות במודול Cell Broadcast. ה-method מקבל נתונים (ממסד הנתונים) עבור ה-methodContentProvider.query
.
דוגמה להטמעה של CellBroadcastContentProvider,
: LegacyCellBroadcastContentProvider
.
בדיקה
ה-Android Compliance Test Suite (CTS) מאמת את הפונקציונליות של ממשקי API של המערכת שתלויים באפליקציה. אפשר גם להריץ את המודול CellBroadcast unit tests/testappsp
.
אם יצרן הציוד המקורי הפעיל את הקוד הסודי של CMAS במכשיר, המכשיר יכול לתמוך במצב ניפוי באגים עם התכונות הבאות.
התראות הבדיקה מקובצות בקטע התראות אחרות עם מתג הפעלה/כיבוי.
ההיסטוריה כוללת את כל ההודעות שהתקבלו אבל לא הוצגו, כמו הודעות כפולות או הודעות בשפה אחרת.
בהודעות מוצגים כל הפרמטרים הזמינים, כולל המספר הסידורי, מזהה ההודעה ותאריך התפוגה.
כדי להפעיל את מצב ניפוי הבאגים, מחייגים *#*#CMAS#*#* בחייגן.
יצירת קשר
לפרטים נוספים או לשאלות לגבי המודול CellBroadcast, אפשר לפנות לקבוצת התמיכה של CellBroadcast.