Na urządzeniach z Androidem 15 lub nowszym możesz
wdrożyć wybór domeny
między usługą IMS a starszymi usługami w sieciach przełączonych obwodowych za pomocą
systemowy interfejs API DomainSelectionService
. DomainSelectionService
to dobrze zdefiniowany interfejs między platformą Androida a dostawcą
na temat wyboru domeny. Dzięki niemu dostawca może
dostarczanie informacji sygnalizujących, takich jak domena, z której pochodzą połączenia wychodzące i SMS-y
i preferencje typu sieci podczas skanowania sieci.
Rysunek 1. Diagram architektury dla funkcji wyboru domeny
Przykłady i źródło
Android zapewnia implementację referencyjną dla funkcji wyboru domeny w
AOSP o TelephonyDomainSelectionService
. Szczegółowe informacje
dokumentacji interfejsu DomainSelectionService
API znajdziesz w
DomainSelectionService
i inne klasy w interfejsie API.
Implementacja
Aby wdrożyć funkcję wyboru domeny na urządzeniu z Androidem, wykonaj te czynności kroki są wymagane:
Utwórz aplikację do wybierania domeny. Usługa musi być zdefiniowana w
AndroidManifest.xml
.Dodaj konfigurację do nakładki urządzenia, aby umożliwić powiązanie platformy z Implementacja
DomainSelectionService
.Obsługuj wymagane interfejsy radiowe HAL na potrzeby funkcji wyboru domeny.
Ta sekcja zawiera więcej informacji na temat tych kroków.
Dodaj wpis usługi w pliku AndroidManifest.xml
Rejestracja usługi DomainSelectionService
w aplikacji do wyboru domeny
za pomocą platformy, dodaj do pliku manifestu wpis usługi za pomocą polecenia
format:
<service
android:name="com.example.domainselection.DomainSelectionService"
android:directBootAware="true"
android:persistent="true"
…
android:permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
…
<intent-filter>
<action android:name="android.telephony.DomainSelectionService"/>
</intent-filter>
…
</service>
Definicja usługi w AndroidManifest.xml
musi określać te elementy
dostępne do działania funkcji wyboru domeny.
directBootAware="true"
: umożliwia wykrywanie i uruchamianie usługi przez telefonii, zanim użytkownik odblokuje urządzenie. Usługa nie ma dostępu szyfrowane przez urządzenie pamięci, zanim użytkownik odblokuje urządzenie. Więcej informacji, zapoznaj się z sekcjami Obsługa trybu bezpośredniego rozruchu i Szyfrowanie oparte na plikach.persistent="true"
: umożliwia trwałe działanie usługi, a nie zabitego przez system, żeby odzyskać pamięć. Ten atrybut działa tylko wtedy, gdy atrybut jest przeznaczona do aplikacji systemowej.permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
: zapewnia że tylko proces z uprawnieniamiBIND_DOMAIN_SELECTION_SERVICE
można powiązać z aplikacją. Zapobiega to powiązaniu nieuczciwej aplikacji z usługi, ponieważ tylko aplikacje systemowe mogą przyznawać te uprawnienia platformy.
Usługa musi również określać element intent-filter
z parametrem
Działanie android.telephony.DomainSelectionService
. Dzięki temu platforma znajdzie
usługę DomainSelectionService
.
Zdefiniuj konfigurację w nakładce na urządzeniu
Aby platforma została bezpiecznie powiązana z usługą DomainSelectionService
, dodaj
tę konfigurację do nakładki na urządzeniu:
config_domain_selection_service_component_name
: nazwa komponentu (spłaszczony ciąg znakówComponentName
) dla parametruDomainSelectionService
usługa
Ponieważ Android nie obsługuje aplikacji innych firm, które można pobrać
DomainSelectionService
, aplikacja do wyboru domeny musi być
aplikacja systemowa pakietu /system_ext/priv-app/
lub /product/priv-app/
folderu Dysku. Platforma sprawdza, czy nazwa pakietu implementacji
pasuje do wartości nakładki na urządzeniu, aby mieć pewność, że tylko zaufane, wstępnie zainstalowane aplikacje
związane.
Obsługa interfejsów radiowych HAL.
Aby można było włączyć funkcję wyboru domeny, włącz obsługę następującego wymaganego radia HAL interfejsy:
-
void setEmergencyMode(int serial, EmergencyMode emcModeType); void triggerEmergencyNetworkScan(int serial, EmergencyNetworkScanTrigger request); void cancelEmergencyNetworkScan(int serial, boolean resetScan); void exitEmergencyMode(int serial);
-
void emergencyNetworkScanResult(RadioIndicationType type, EmergencyRegResult result);
Weryfikacja
Aby sprawdzić, czy platforma telefoniczna prawidłowo reaguje na
w interfejsie DomainSelectionService
, uruchom testy CTS w
DomainSelectionServiceTestOnMockModem