Moduł CellBroadcast zmniejsza konieczność powtarzania czynności przez producentów OEM (co z kolei ogranicza fragmentaryzację w ekosystemie Androida i zapewnia spójne działanie dla użytkowników końcowych) oraz pomaga uprościć testowanie i certyfikowanie przez operatorów w zakresie wymagań związanych z CellBroadcast (ponieważ producent OEM nie może modyfikować kodu). Ten moduł można aktualizować, co oznacza, że można aktualizować jego funkcjonalność poza normalnym cyklem aktualizacji Androida.
Format pakietu
Moduł CellBroadcast składa się z tych usług i aplikacji.
Usługa CellBroadcastService obsługuje dekodowanie SMS-ów z usługi CellBroadcast, geofencing dla bezprzewodowego alarmu ostrzeżeniowego (WEA) 3.0, sprawdzanie duplikatów wiadomości oraz przesyłanie wiadomości do aplikacji. Jest to usługa przesyłania wiadomości w schemacie jeden-do-wielu z geograficznym ograniczeniem i geofencingiem, która umożliwia jednoczesne wysyłanie wiadomości do wielu użytkowników telefonów komórkowych w określonym obszarze. Usługa jest zdefiniowana przez komitet GSM ETSI, 3GPP i jest częścią standardów telekomunikacyjnych.
Aplikacja CellBroadcastReceiver to domyślna aplikacja systemowa, która obsługuje alerty awaryjne i nieawaryjne (takie jak alerty Amber i alerty prezydenckie) oraz przedstawia informacje użytkownikom końcowym na podstawie regulaminów operatorów i przepisów regionalnych.
Proces przesyłania komunikatów z sieci komórkowej
Poniższy rysunek przedstawia przepływ wiadomości CellBroadcast.
Rysunek 1. Przepływ wiadomości w CellBroadcastReceiver
Warstwę interfejsu radiowego (RIL)
InBoundSMSHandler
informuje o SMS-ie z CellBroadcast w sieci CDMA/GSM.Ramka przekazuje SMS-a z komórki do modułu CBS w celu zanalizowania i przetworzenia przychodzącej wiadomości.
Po przetworzeniu wiadomości usługa CellBroadcastService przekazuje intencję do domyślnej aplikacji CellBroadcastReceiver.
Aplikacja CellBroadcastReceiver wyświetla wiadomość użytkownikowi.
Format modułu
Usługi CellBroadcastService i aplikacja CellBroadcastReceiver znajdują się w jednym pliku APEX (com.android.cellbroadcast
), który jest dostępny dla urządzeń z Androidem 11 lub nowszym. Moduł zawiera kod w języku package/app/CellBroadcastReceiver
i przenosi istniejące klasy platformy do wersji packages/modules/CellBroadcastService
.
Zależności modułu
Moduł CellBroadcast współpracuje ze platformą tylko za pomocą stabilnych @SystemApi
(bez interfejsów API @hide
) i zależy od poniższych bibliotek statycznych.
Androidx.legacy_legacy-support-v13
Androidx.recyclerview_recyclerview
Androidx.preference_preference
androidx.legacy_legacy-preference-v14
androidx.appcompat_appcompat
Konfigurację możesz dostosować za pomocą nakładek zasobów w czasie wykonywania (RRO).
Konfiguracja uprawnień
Moduł CellBroadcast jest podpisany podpisem Google, a nie podpisem platformy, co oznacza, że traci dostęp do uprawnień podpisu.
Zamiast tego Android 11 definiuje nowe uprawnienie do podpisywania com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
w ramach modułu CellBroadcast; tylko pakiety w tym module mogą uzyskać to uprawnienie, ponieważ są podpisane tym samym kluczem. To uprawnienie umożliwia aplikacji CellBroadcastReceiver pełny dostęp do bazy danych w CellBroadcastService.
Platforma przyznaje uprawnienia w czasie działania aplikacji android.permission.READ_CELL_BROADCASTS
domyślnej systemowej aplikacji do obsługi SMS-ów, która umożliwia dostęp do historii alertów o zagrożeniu.
Integrowanie modułu CellBroadcast
Z tej sekcji dowiesz się, jak zintegrować moduł CellBroadcast.
Integracja z Ustawieniami
W aplikacji Ustawienia możesz określić, gdzie mają być zintegrowane ustawienia CellBroadcast (użytkownicy mają dostęp do strony ustawień CellBroadcast przez Ustawienia > Aplikacje i powiadomienia > Zaawansowane > Alert o zagrożeniu). Aby uruchomić aplikację CellBroadcastReceiver z aplikacji Ustawienia, zmień te ustawienia za pomocą nazwy pakietu com.android.cellbroadcastreceiver
.
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>
Integracja z aplikacjami do obsługi wiadomości
Aby otworzyć historię wiadomości z usługi CellBroadcast, możesz zintegrować link do aplikacji z aplikacją do obsługi wiadomości. W aplikacji Wiadomości na Androidzie ta funkcja została zintegrowana z menu Ustawienia > Zaawansowane > Alert o zagrożeniu. Aby zintegrować link z własną aplikacją do obsługi wiadomości, zdefiniuj ścieżkę w aplikacji do obsługi wiadomości i skonfiguruj nazwę komponentu modułu komunikatów w sieci komórkowej jako com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
.
Integracja ze skrzynką odbiorczą SMS-ów
Możesz włączyć wyświetlanie wiadomości CellBroadcast w domyślnej aplikacji do obsługi wiadomości, zastępując tę konfigurację za pomocą nakładki zasobów w czasie wykonywania.
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
Ponieważ przyznawanie uprawnień nie leży w zakresie modułu Telewizja komórkowa, musisz przyznać uprawnienie AppOpsManager.OP_WRITE_SMS
do modułu komunikatów w sieci komórkowej, aby zapewnić kompleksową pomoc. Implementację referencyjną AOSP znajdziesz w tej SmsApplication.java
aktualizacji.
Uruchom aplikację CellBroadcastReceiver
Aplikacja CellBroadcastReceiver ma te punkty uruchamiania:
Menu aplikacji Ustawienia.
Aplikacja (w tym aplikacja innej firmy), np. aplikacja do obsługi wiadomości, która zawiera link do historii wiadomości z CellBroadcast.
(Opcjonalnie) Ikona uruchamiania z ekranu głównego Androida dodana przez producenta OEM. Więcej informacji znajdziesz w sekcji Dodawanie ikony uruchamiania.
Ustawienia aplikacji CellBroadcastReceiver
Na poniższych zrzutach ekranu widać menu ustawień aplikacji CellBroadcastReceiver.
Rysunek 2. Menu ustawień aplikacji CellBroadcastReceiver
Rysunek 3. Ekran z historią alertów o zagrożeniu
Dodaj ikony uruchamiania
Możesz włączyć dostęp do historii wiadomości z usługi CellBroadcast w wyszukiwarce aplikacji oraz za pomocą własnych ikon uruchamiania.
Aby umożliwić dostęp do historii wiadomości z poziomu menu aplikacji, za pomocą RRO zastąpij tę konfigurację.
<item type="bool" name="show_message_history_in_launcher" />
Aby zastąpić domyślną ikonę AOSP, za pomocą RRO zastąp tę konfigurację.
<!-- Customize launcher icon for cellbroadcast history --> <item type="mipmap" name="ic_launcher_cell_broadcast" />
Włączanie kodu tajnego CMAS
Aby włączyć tajny kod CMAS, *#*#CMAS#*#* (*#*#2627#*#* na klawiaturze telefonu) aplikacja telefonu musi nasłuchiwać specjalnego kodu telefonu w postaci *#*#code#*#* i przetworzyć go metodą publiczną sendDialerSpecialCode
.
Wymagania dotyczące informacji o obszarze: kanał 50
Kanał 50 to specjalny kanał, za pomocą którego operatorzy mogą nadawać informacje dotyczące obszaru (z wyjątkiem MTN w RPA). W przypadku tego kanału wiadomości rozgłaszane nie uruchamiają okna dialogowego ani powiadomienia. Zamiast tego wiadomości z transmisji będą wyświetlane w menu Ustawienia w sekcji Stan karty SIM lub na pasku stanu (np. wyświetlanie kodu pocztowego).
Implementacja usługi CellBroadcastService na Androidzie zapewnia obsługę tych interfejsów API w usłudze transmisji komórkowej dla aplikacji Ustawienia i SysUI, aby uzyskać informacje o transmisji na kanale 50. Aby to zrobić:
Zarejestruj transmisję
android.telephony.action.AREA_INFO_UPDATED
i zastąpij nazwę pakietu odbiorcyconfig_area_info_receiver_packages
za pomocą RRO.Powiąż z elementem
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
.
Aplikacje Ustawienia i SysUI wykraczają poza zakres modułu CellBroadcast, więc aby zapewnić obsługę kompleksową, musisz wdrożyć zmiany w aplikacji SystemUI lub Ustawienia. Implementację referencyjną znajdziesz w aplikacji CellBroadcastService Settings.
Dostosowywanie
Nie możesz bezpośrednio modyfikować kodu źródłowego modułu CellBroadcast, ale możesz użyć nakładek zasobów w czasie wykonywania (RRO), aby włączyć (lub wyłączyć) parametry (możesz na przykład dostosować kolor powiadomień i wymiarów w dialogach). Aby zastąpić domyślne wartości parametrów używanych w module CellBroadcast, zmień nazwę docelowego pakietu na com.android.cellbroadcastreceiver
. Ponadto:
Listę konfiguracji, które można nakładać, znajdziesz w sekcji
overlayable.xml
.Przykładową implementację znajdziesz w
RROSampleTestApp
w AOSP.
Jeśli w implementacji brakuje zasobów do tłumaczenia ciągów interfejsu lub jeśli tłumaczenia nie spełniają Twoich oczekiwań, możesz zastąpić zasoby tłumaczeniowe za pomocą RRO lub skontaktować się z zespołem Google ds. tłumaczeń, aby nadpisać translacje ciągu nadrzędnego do modułu CellBroadcast. Jeśli zastąpisz zasoby tłumaczenia, Google musi udostępnić te ciągi znaków w pliku overlayable.xml
, aby umożliwić ich zastąpienie. Jeśli potrzebujesz dodatkowych konfiguracji do dostosowania interfejsu, skontaktuj się z zespołem pomocy CellBroadcast.
Przenieś dane
Android 11 zawiera starszą aplikację CellBroadcast, która jest mechanizmem służącym do zachowania i przenoszenia danych aplikacji (w tym ustawień użytkownika i historii alertów o wypadkach) na urządzeniach przechodzących na moduł CellBroadcast. Implementacje na Androida, które korzystają z modułu CellBroadcast, powinny zawierać w kompilacji starszą wersję aplikacji CellBroadcast, aby umożliwić migrację danych. Jeśli w implementacji korzystasz z niestandardowego rozwiązania CellBroadcast, zdefiniuj pakiet APK CellBroadcastContentProvider, aby zachować dane (starszą wersję możesz bezpiecznie usunąć w kolejnej wersji).
Na urządzeniach z aktualizacją do korzystania z modułu CellBroadcast moduł pobiera dane z AOSP LegacyCellBroadcastApp lub z pliku APK CellBroadcastContentProvider zdefiniowanego przez OEM-a za pomocą dobrze zdefiniowanej cellbroadcast-legacy
autorytetu.
Używanie pliku APK CellBroadcastContentProvider zdefiniowanego przez producenta OEM
Gdy definiujesz plik APK CellBroadcastContentProvider, musi on spełniać te wymagania.
Plik APK jest bezgłowym plikiem APK, który wyświetla tylko zawartość swojej bazy danych i
SharedPreferences
przez obiektContentProvider
z upoważnieniemcellbroadcast-legacy
. Nie jest on dostępny dla aplikacji innych firm.Plik APK jest tworzony i własnością producenta OEM, który może nadal hostować ukryte schematy interfejsu API.
Aby przenieść SharedPreferences
do modułu CellBroadcast, plik APK CellBroadcastContentProvider musi obsługiwać metodę ContentProvider.call
z tymi parametrami:
- Decyzja:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- Metoda:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
Arg:
@SystemAPI CellBroadcast.Preference
To jest lista obsługiwanych udostępnionych kluczy preferencji dla modułu CellBroadcast. Dane pochodzą z
SharedPreferences
w przypadku metodyContentProvider.call
.
Aby przenieść historię wiadomości do modułu CellBroadcast, plik APK CellBroadcastContentProvider musi obsługiwać metodę ContentProvider.query
z tymi parametrami:
- Decyzja:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. Kolumny zapytań zawierają listę obsługiwanych właściwości wiadomości dla modułu CellBroadcast. Pobiera dane (z Twojej bazy danych) dla metodyContentProvider.query
.
Implementację referencyjną dla CellBroadcastContentProvider,
znajdziesz w LegacyCellBroadcastContentProvider
.
Testowanie
Android Compatibility Test Suite (CTS) służy do weryfikacji działania systemowych interfejsów API zależnych od aplikacji. Możesz też uruchomić moduł CellBroadcastunit tests/testappsp
.
Jeśli producent OEM włączył kod tajny CMAS na urządzeniu, urządzenie może obsługiwać tryb debugowania z tymi funkcjami.
Alerty testowe są grupowane w sekcji Inne alerty i mają przełącznik włączania/wyłączania.
Historia obejmuje wszystkie otrzymane, ale niewyświetlone wiadomości, takie jak zduplikowane wiadomości lub wiadomości w innym języku.
Wiadomości zawierają wszystkie dostępne parametry, w tym numer seryjny, identyfikator wiadomości i datę wygaśnięcia.
Aby włączyć tryb debugowania, wybierz *#*#CMAS#*#* na klawiaturze.
Kontakt
Aby uzyskać więcej informacji lub zadać pytania dotyczące modułu CellBroadcast, skontaktuj się z grupą pomocy CellBroadcast.