CellBroadcast

Moduł CellBroadcast zmniejsza powtarzalność działań producentów OEM (co z kolei ogranicza fragmentację ekosystemu 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 otrzymywać aktualizacje funkcji poza normalnym cyklem wydawniczym Androida.

Format pakietu

Moduł CellBroadcast składa się z tych usług i aplikacji:

  • Usługa CellBroadcastService obsługuje dekodowanie SMS-ów z komunikatów z sieci komórkowej, geofencing dla alertów bezprzewodowych (WEA) w wersji 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 w określonym obszarze geograficznym, która umożliwia dostarczanie wiadomości do wielu użytkowników telefonów komórkowych w wyznaczonym obszarze w tym samym czasie. Usługa ta jest zdefiniowana przez komitet ETSI GSM, 3GPP i stanowi część standardów telekomunikacyjnych.

  • Aplikacja CellBroadcastReceiver jest domyślną aplikacją systemową, która obsługuje alerty alarmowe i inne (np. alerty o zaginięciu dziecka czy alerty prezydenckie) oraz wyświetla informacje użytkownikom na podstawie przepisów operatora i regionalnych.

Przepływ komunikatów z sieci komórkowej

Na ilustracji poniżej przedstawiono przepływ wiadomości CellBroadcast.

Przepływ wiadomości CellBroadcastReceiver

Rysunek 1. Przepływ wiadomości CellBroadcastReceiver

  1. Warstwa interfejsu radiowego (RIL) powiadamia InBoundSMSHandler o SMS-ie typu CDMA/GSM CellBroadcast.

  2. Platforma przekazuje SMS-a z komunikatem z sieci komórkowej do modułu CBS, aby go przeanalizować i przetworzyć.

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

  4. 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 przenosi istniejące klasy platformy do packages/modules/CellBroadcastService.

Zależności modułów

Moduł CellBroadcast współdziała z platformą, korzystając tylko ze stabilnych interfejsów API@SystemApi (bez interfejsów API@hide), i jest zależny od tych 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 na zasoby środowiska wykonawczego.

Konfiguracja uprawnień

Moduł CellBroadcast jest podpisany podpisem Google zamiast podpisem platformy, co oznacza, że traci dostęp do uprawnień związanych z podpisem. 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 systemowej aplikacji do obsługi SMS-ów uprawnienie android.permission.READ_CELL_BROADCASTS w czasie działania do uzyskiwania dostępu do historii alertów alarmowych.

Stosowanie 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 końcowi mają dostęp do strony ustawień CellBroadcast, wybierając Ustawienia > Aplikacje i powiadomienia > Zaawansowane > Alerty o zagrożeniu). Aby uruchomić aplikację CellBroadcastReceiver z aplikacji Ustawienia, zmień te ustawienia konfiguracji, używając 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

Możesz zintegrować link do aplikacji z komunikatorami, aby otwierać historię wiadomości CellBroadcast. W aplikacji Wiadomości na Androida ta funkcja została zintegrowana z sekcją Ustawienia > Zaawansowane > Alerty o zagrożeniu. Aby zintegrować link we własnej aplikacji do przesyłania wiadomości, zdefiniuj ścieżkę w tej aplikacji i skonfiguruj nazwę komponentu 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 poniższą konfigurację za pomocą nakładki zasobu w czasie działania.

<item type="bool" name="enable_write_alerts_to_sms_inbox" />

Przyznawanie uprawnień nie wchodzi w zakres modułu CellBroadcast, dlatego musisz przyznać modułowi CellBroadcast uprawnienie AppOpsManager.OP_WRITE_SMS, aby zapewnić kompleksową obsługę. Wzorcową implementację AOSP znajdziesz w tym SmsApplication.java patchu.

Uruchom aplikację 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 rozgłaszanych w sieci komórkowej.

  • (Opcjonalnie) Ikona uruchamiania z ekranu głównego Androida dodana przez producenta OEM. Więcej informacji znajdziesz w sekcji Dodawanie ikony uruchamiania.

Ustawienia aplikacji CellBroadcastReceiver

Poniższe zrzuty ekranu przedstawiają menu ustawień aplikacji CellBroadcastReceiver.

Menu ustawień aplikacji CellBroadcastReceiver

Rysunek 2. Menu ustawień aplikacji CellBroadcastReceiver

Historia alertów o zagrożeniu

Rysunek 3. Ekran historii alertów o zagrożeniu

Dodawanie ikon uruchamiania

Możesz włączyć dostęp do historii wiadomości CellBroadcast z poziomu programu uruchamiającego aplikacje i za pomocą własnych ikon uruchamiania.

  • Aby włączyć dostęp do historii wiadomości z poziomu selektora aplikacji, zastąp poniższą 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ą 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 formacie *#*#code#*#* i obsługiwać go za pomocą metody publicznej sendDialerSpecialCode.

Wymagania dotyczące informacji o obszarze: kanał 50

Kanał 50 to specjalny kanał, na którym operatorzy mogą nadawać informacje związane z danym obszarem (z wyjątkiem MTN w RPA). W przypadku tego kanału wiadomości rozgłoszeniowe nie powodują wyświetlania okna ani powiadomienia. Zamiast tego komunikaty rozgłoszeniowe pojawiają się w menu Ustawienia w sekcji Stan karty SIM lub na pasku stanu (np. wyświetlając kod pocztowy).

Implementacja usługi CellBroadcastService na Androidzie obsługuje te interfejsy API w usłudze transmisji komórkowej, aby aplikacje Ustawienia i SysUI mogły uzyskiwać informacje o kanale transmisji 50. Aby to zrobić:

  • Zarejestruj transmisję android.telephony.action.AREA_INFO_UPDATED i zastąp nazwę pakietu odbiorcy config_area_info_receiver_packages za pomocą RRO.

  • Połącz z CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE.

Ponieważ aplikacje Ustawienia i SysUI nie wchodzą w zakres modułu CellBroadcast, musisz wdrożyć zmiany w aplikacji SystemUI lub Ustawienia, aby zapewnić kompleksową obsługę. Implementację referencyjną znajdziesz w aplikacji Ustawienia usługi CellBroadcastService.

Dostosowywanie

Nie możesz bezpośrednio modyfikować kodu źródłowego modułu CellBroadcast, ale możesz używać nakładek zasobów w czasie działania (RRO), aby włączać (lub wyłączać) parametry (możesz na przykład 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. 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 tłumaczenia ciągów interfejsu lub tłumaczenia nie spełniają Twoich oczekiwań, możesz zastąpić zasoby tłumaczenia za pomocą RRO lub współpracować z zespołem tłumaczy Google, aby przesłać tłumaczenia ciągów do modułu CellBroadcast. Jeśli zastąpisz zasoby tłumaczenia, Google musi udostępnić te ciągi znaków w overlayable.xml, aby umożliwić ich zastąpienie. Jeśli potrzebujesz więcej konfiguracji do dostosowania interfejsu, skontaktuj się z grupą pomocy CellBroadcast.

Przenieś dane

Android 11 zawiera starszą aplikację CellBroadcast, która jest mechanizmem zachowywania i migrowania danych aplikacji (w tym ustawień użytkownika i historii alertów awaryjnych) na urządzeniach, które są aktualizowane do modułu CellBroadcast. Implementacje Androida, które korzystają z modułu CellBroadcast, powinny zawierać w kompilacji starszą aplikację CellBroadcast na potrzeby migracji danych. Jeśli Twoja implementacja korzysta z niestandardowego rozwiązania dotyczącego transmisji komórkowej, zdefiniuj pakiet APK CellBroadcastContentProvider, aby zachować dane (w kolejnej wersji możesz bezpiecznie usunąć starszy pakiet APK transmisji komórkowej).

Na urządzeniach, które zostały zaktualizowane do korzystania z modułu CellBroadcast, moduł pobiera dane z aplikacji AOSP LegacyCellBroadcastApp lub z pliku APK CellBroadcastContentProvider zdefiniowanego przez producenta OEM za pomocą dobrze zdefiniowanego autorytetu cellbroadcast-legacy.

Używanie zdefiniowanego przez producenta OEM pakietu APK CellBroadcastContentProvider

Podczas definiowania pliku APK CellBroadcastContentProvider musi on być zgodny z tymi specyfikacjami.

  • Plik APK jest bezgłowym plikiem APK, który udostępnia tylko zawartość swojej bazy danych i SharedPreferences za pomocą obiektu ContentProvider z uprawnieniami cellbroadcast-legacy i nie jest dostępny dla aplikacji innych firm.

  • Plik APK jest opracowywany i stanowi własność 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:

  • Decyzyjność: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI
  • Metoda: @SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
  • Argument: @SystemAPI CellBroadcast.Preference

    To lista obsługiwanych kluczy ustawień udostępnionych 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:

  • Decyzyjność: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI Kolumny zapytania zawierają listę obsługiwanych właściwości wiadomości w module CellBroadcast. Pobiera dane (z bazy danych) dla metody ContentProvider.query.

Więcej informacji o implementacji referencyjnej CellBroadcastContentProvider, znajdziesz w LegacyCellBroadcastContentProvider.

Testowanie

Pakiet testów zgodności Androida (CTS) weryfikuje działanie interfejsów API systemu zależnych od aplikacji. Możesz też uruchomić moduł CellBroadcast unit tests/testappsp.

Jeśli producent OEM włączył tajny kod CMAS na urządzeniu, może ono obsługiwać tryb debugowania z tymi funkcjami:

  • Alerty testowe są zgrupowane w sekcji Inne alerty i mają przełącznik włączania/wyłączania.

  • Historia obejmuje wszystkie wiadomości, które zostały odebrane, ale nie wyświetlone, np. zduplikowane 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, wpisz na klawiaturze numer *#*#CMAS#*#*.

Kontakt

Jeśli masz pytania lub chcesz uzyskać więcej informacji o module CellBroadcast, skontaktuj się z grupą pomocy CellBroadcast.