Komunikaty z sieci komórkowej

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.

Przepływ wiadomości w CellBroadcastReceiver

Rysunek 1. Przepływ wiadomości w CellBroadcastReceiver

  1. Warstwę interfejsu radiowego (RIL) InBoundSMSHandler informuje o SMS-ie z CellBroadcast w sieci CDMA/GSM.

  2. Ramka przekazuje SMS-a z komórki do modułu CBS w celu zanalizowania i przetworzenia przychodzącej wiadomości.

  3. Po przetworzeniu wiadomości usługa CellBroadcastService przekazuje intencję do domyślnej aplikacji CellBroadcastReceiver.

  4. 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_HISTORYw 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.

Menu ustawień aplikacji CellBroadcastReceiver

Rysunek 2. Menu ustawień aplikacji CellBroadcastReceiver

Historia alertów o zagrożeniu

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 odbiorcy config_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-legacyautorytetu.

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 SharedPreferencesprzez obiekt ContentProviderz upoważnieniem cellbroadcast-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 metody ContentProvider.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 metody ContentProvider.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.