Moduł CellBroadcast zmniejsza powtarzalność działań producentów OEM (co z kolei zmniejsza fragmentację w ekosystemie Androida i zapewnia użytkownikom spójne działanie) oraz pomaga usprawnić testowanie i certyfikację przez operatorów pod kątem wymagań związanych z CellBroadcast (ponieważ producenci OEM nie mogą modyfikować kodu). Ten moduł można aktualizować, co oznacza, że może on otrzymywać aktualizacje funkcji poza normalnym cyklem wydawania Androida.
Format pakietu
Moduł CellBroadcast składa się z tej usługi i aplikacji.
Usługa CellBroadcastService obsługuje dekodowanie SMS-ów CellBroadcast, geofencing na potrzeby bezprzewodowych alertów o zagrożeniu (WEA) 3.0, sprawdzanie duplikatów wiadomości i przesyłanie wiadomości do aplikacji. Jest to usługa przesyłania wiadomości do wielu odbiorców z geolokalizacją i geofencingiem, która umożliwia dostarczanie wiadomości do wielu użytkowników telefonów komórkowych w określonym obszarze w tym samym czasie. Usługa jest zdefiniowana przez komitet ETSI GSM, 3GPP, oraz jest częścią standardów telekomunikacyjnych.
Aplikacja CellBroadcastReceiver to domyślna aplikacja systemowa, która obsługuje alerty o zagrożeniu i inne alerty (np. alerty Amber i prezydenckie) oraz wyświetla informacje użytkownikom na podstawie przepisów operatora i przepisów regionalnych.
Przepływ wiadomości CellBroadcast
Na ilustracji poniżej przedstawiono przepływ wiadomości CellBroadcast.
Rysunek 1. Przepływ wiadomości CellBroadcastReceiver
Warstwa interfejsu radiowego (RIL) powiadamia
InBoundSMSHandlero SMS-ie CellBroadcast CDMA/GSM.Framework przekazuje SMS-a CellBroadcast do modułu CBS, aby przeanalizować i przetworzyć wiadomość przychodzącą.
Po przetworzeniu wiadomości usługa CellBroadcastService przekazuje intencję do domyślnej aplikacji systemowej CellBroadcastReceiver.
Aplikacja CellBroadcastReceiver wyświetla wiadomość użytkownikowi.
Format modułu
Usługa CellBroadcastService i aplikacja CellBroadcastReceiver są zawarte w
jednym pliku APEX
(com.android.cellbroadcast), który jest dostępny na urządzeniach z
Androidem 11 lub nowszym. Moduł zawiera kod w package/app/CellBroadcastReceiver i migruje istniejące klasy frameworka do packages/modules/CellBroadcastService.
Zależności modułu
Moduł CellBroadcast wchodzi w interakcję z platformą tylko za pomocą stabilnych interfejsów @SystemApi (bez interfejsów @hide) i zależy od tych bibliotek statycznych.
Androidx.legacy_legacy-support-v13Androidx.recyclerview_recyclerviewAndroidx.preference_preferenceandroidx.legacy_legacy-preference-v14androidx.appcompat_appcompat
Konfigurację możesz dostosować za pomocą nakładek zasobów czasu działania (RRO).
Konfiguracja uprawnień
Moduł CellBroadcast jest podpisany podpisem Google, a nie podpisem platformy, co oznacza, że moduł traci dostęp do uprawnień podpisu.
Zamiast tego Android 11 definiuje nowe uprawnienie podpisu com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY w module CellBroadcast. Tylko pakiety w 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 usłudze CellBroadcastService.
Platforma przyznaje domyślnej aplikacji systemowej do obsługi SMS-ów uprawnienie czasu działania android.permission.READ_CELL_BROADCASTS do uzyskiwania dostępu do historii alertów o zagrożeniu.
Integracja modułu CellBroadcast
W tej sekcji opisujemy, jak zintegrować moduł CellBroadcast.
Integracja z Ustawieniami
Możesz zdecydować, gdzie zintegrować ustawienia CellBroadcast w aplikacji Ustawienia (użytkownicy mają dostęp do strony ustawień CellBroadcast, wybierając Ustawienia > Aplikacje i powiadomienia > Zaawansowane > Alert o zagrożeniu). Aby uruchomić aplikację CellBroadcastReceiver z aplikacji Ustawienia, zmień te konfiguracje ustawień na nazwę 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
Możesz zintegrować link do aplikacji z aplikacjami do obsługi wiadomości, aby otworzyć historię wiadomości CellBroadcast. W aplikacji Wiadomości na Androida zostało to zintegrowane w sekcji Ustawienia > Zaawansowane > Alert o zagrożeniu. Aby zintegrować link we własnej aplikacji do obsługi wiadomości, zdefiniuj ścieżkę w aplikacji do obsługi wiadomości i skonfiguruj nazwę komponentu dla modułu CellBroadcast 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 środowiska wykonawczego.
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
Ponieważ przyznawanie uprawnień wykracza poza zakres modułu CellBroadcast, musisz przyznać modułowi CellBroadcast uprawnienie AppOpsManager.OP_WRITE_SMS, aby zapewnić kompleksową obsługę. Implementację referencyjną AOSP,
znajdziesz w tej SmsApplication.java
poprawce.
Uruchamianie aplikacji CellBroadcastReceiver
Aplikacja CellBroadcastReceiver ma te punkty uruchamiania.
Menu aplikacji Ustawienia.
Aplikacja (w tym aplikacje innych firm), np. aplikacja do obsługi wiadomości, która zawiera link do historii wiadomości CellBroadcast.
(Opcjonalnie) Ikona uruchamiania dodana przez producenta OEM na ekranie głównym Androida. Więcej informacji znajdziesz w sekcji Dodawanie ikony uruchamiania.
Ustawienia aplikacji CellBroadcastReceiver
Na zrzutach ekranu poniżej widać menu ustawień aplikacji CellBroadcastReceiver.
Rysunek 2. Menu ustawień aplikacji CellBroadcastReceiver
Rysunek 3. Ekran historii alertów o zagrożeniu
Dodawanie ikon uruchamiania
Możesz włączyć dostęp do historii wiadomości CellBroadcast z programu uruchamiającego aplikacje i za pomocą własnych ikon uruchamiania.
Aby włączyć dostęp do historii wiadomości z programu uruchamiającego aplikacje, zastąp tę konfigurację za pomocą nakładki RRO.
<item type="bool" name="show_message_history_in_launcher" />Aby zastąpić domyślną ikonę AOSP, zastąp tę konfigurację za pomocą nakładki RRO.
<!-- Customize launcher icon for cellbroadcast history --> <item type="mipmap" name="ic_launcher_cell_broadcast" />
Włączanie tajnego kodu CMAS
Aby włączyć tajny kod CMAS, *#*#CMAS#*#* (*#*#2627#*#* na
klawiaturze), aplikacja do wybierania numerów musi nasłuchiwać specjalnego kodu w postaci
*#*#code#*#* i obsługiwać go za pomocą metody publicznej
sendDialerSpecialCode.
Wymagania dotyczące informacji o obszarze: kanał 50
Kanał 50 to specjalny kanał, za pomocą którego operatorzy mogą przesyłać informacje związane z obszarem (z wyjątkiem MTN w RPA). W przypadku tego kanału wiadomości nie powodują wyświetlenia okna ani powiadomienia. Zamiast tego wiadomości pojawiają się w menu Ustawienia w sekcji Stan karty SIM lub na pasku stanu (np. wyświetlając kod pocztowy).
Implementacja usługi Android CellBroadcastService obsługuje te interfejsy API w usłudze komunikaty z sieci komórkowej, aby aplikacje Ustawienia i SysUI mogły uzyskiwać informacje o kanale 50. Aby to zaimplementować:
Zarejestruj transmisję
android.telephony.action.AREA_INFO_UPDATEDi zastąp nazwę pakietu odbiorcyconfig_area_info_receiver_packagesza pomocą nakładki RRO.Powiąż z
CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE.
Ponieważ aplikacje Ustawienia i SysUI wykraczają poza zakres modułu CellBroadcast, musisz zaimplementować zmiany w aplikacji SystemUI lub Ustawienia, aby zapewnić kompleksową obsługę. Implementację referencyjną znajdziesz w aplikacji Ustawienia CellBroadcastService.
Dostosowywanie
Nie możesz bezpośrednio modyfikować kodu źródłowego modułu CellBroadcast, ale możesz używać nakładek zasobów czasu działania
(RRO), aby
włączać (lub wyłączać) parametry
(np. możesz dostosować kolor powiadomień i
wymiary okien). Aby zastąpić domyślne wartości parametrów używanych w module CellBroadcast, zmień nazwę pakietu docelowego na com.android.cellbroadcastreceiver. Oprócz tego:
Listę konfiguracji, które można zastąpić, znajdziesz w
overlayable.xml.Przykład implementacji znajdziesz w
RROSampleTestAppw AOSP.
Jeśli w implementacji brakuje zasobów tłumaczenia ciągów interfejsu lub jeśli tłumaczenia nie spełniają Twoich oczekiwań, możesz zastąpić zasoby tłumaczenia za pomocą nakładki RRO lub poprosić zespół tłumaczy Google o przesłanie tłumaczeń ciągów do modułu CellBroadcast. Jeśli zastąpisz zasoby tłumaczenia, Google musi udostępnić te ciągi w overlayable.xml, aby umożliwić ich zastąpienie. Jeśli potrzebujesz więcej konfiguracji do dostosowania interfejsu, skontaktuj się z
grupą pomocy CellBroadcast.
Migruj dane
Android 11 zawiera starszą aplikację CellBroadcast, która umożliwia zachowanie i migrację danych aplikacji (w tym ustawień użytkownika i historii alertów o zagrożeniu) na urządzeniach, które są uaktualniane do modułu CellBroadcast. Implementacje Androida, które korzystają z modułu CellBroadcast, powinny zawierać starszą aplikację CellBroadcast w swojej kompilacji na potrzeby migracji danych. Jeśli Twoja implementacja korzysta z niestandardowego rozwiązania do obsługi komunikatów z sieci komórkowej, musisz zdefiniować plik APK CellBroadcastContentProvider, aby zachować dane (w kolejnej wersji możesz bezpiecznie usunąć starszy plik APK do obsługi komunikatów z sieci komórkowej).
Na urządzeniach uaktualnionych do korzystania z modułu CellBroadcast moduł pobiera dane z aplikacji AOSP LegacyCellBroadcastApp lub zdefiniowanego przez producenta OEM pliku APK CellBroadcastContentProvider za pomocą dobrze zdefiniowanego organu cellbroadcast-legacy.
Używanie zdefiniowanego przez producenta OEM pliku APK CellBroadcastContentProvider
Podczas definiowania pliku APK CellBroadcastContentProvider musi on być zgodny z tymi specyfikacjami.
Plik APK jest bez interfejsu graficznego plikiem APK, który udostępnia tylko zawartość swojej bazy danych i
SharedPreferencesza pomocąContentProviderobiektu z uprawnieniemcellbroadcast-legacyi nie jest dostępny dla aplikacji innych firm.Plik APK jest opracowywany i należy do producenta OEM, który może nadal hostować swój ukryty schemat interfejsu API.
Aby przeprowadzić migrację SharedPreferences do modułu CellBroadcast, plik APK
CellBroadcastContentProvider musi obsługiwać metodę
ContentProvider.call)
z tymi parametrami:
- Organ:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI - Metoda:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE Argument:
@SystemAPI CellBroadcast.PreferenceOto lista obsługiwanych kluczy preferencji współdzielonych w module CellBroadcast. Dane pochodzą z
SharedPreferencesdla metody.ContentProvider.call
Aby przeprowadzić migrację historii wiadomości do modułu CellBroadcast, plik APK
CellBroadcastContentProvider musi obsługiwać metodę
ContentProvider.query
z tymi parametrami:
- Organ:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI. Lista kolumn zapytania zawiera obsługiwane właściwości wiadomości w module CellBroadcast. Pobiera dane (z bazy danych) dla metodyContentProvider.query.
Implementację referencyjną CellBroadcastContentProvider, znajdziesz w
LegacyCellBroadcastContentProvider.
Testowanie
Pakiet CTS (Compatibility Test Suite) weryfikuje działanie interfejsów API systemu zależnych od aplikacji. Możesz też uruchomić moduł CellBroadcast
unit tests/testappsp.
Jeśli producent OEM ma włączony tajny kod CMAS dla urządzenia, to urządzenie może obsługiwać tryb debugowania z następującymi funkcjami.
Alerty testowe są grupowane w sekcji Inne alerty z przełącznikiem włączania i wyłączania.
Historia obejmuje wszystkie wiadomości, które zostały odebrane, ale nie wyświetlone, np. duplikaty wiadomości lub wiadomości w innym języku.
Wiadomości wyświetlają wszystkie dostępne parametry, w tym numer seryjny, identyfikator wiadomości i datę ważności.
Aby włączyć tryb debugowania, na klawiaturze wybierz *#*#CMAS#*#*.
Kontakt
Jeśli masz pytania lub chcesz uzyskać więcej informacji o module CellBroadcast, skontaktuj się z grupą pomocy CellBroadcast.