Auf Geräten mit Android 15 oder höher können Sie
Domainauswahl implementieren
zwischen dem IMS-Dienst und Legacy-Diensten über
die DomainSelectionService
-System-API DomainSelectionService
ist eine klar definierte Schnittstelle zwischen der Android-Plattform und einem bereitgestellten Anbieter.
Implementierung der Domainauswahl. Über diese Schnittstelle kann der Anbieter
Signalinformationen bereitstellen, z. B. die Domain für ausgehende Anrufe und SMS
und der Netzwerktyp-Präferenz beim Netzwerkscans auf der Plattform.
Abbildung 1: Architekturdiagramm für die Funktion zur Domainauswahl
Beispiele und Quelle
Android bietet eine Referenzimplementierung für die Funktion zur Domainauswahl in
AOSP: TelephonyDomainSelectionService
. Ausführliche Informationen
Dokumentation für die DomainSelectionService
API finden Sie unter
DomainSelectionService
und die anderen Klassen in der API.
Implementierung
So implementieren Sie die Funktion zur Domainauswahl auf einem Android-Gerät: Schritte erforderlich:
Erstellen Sie eine Anwendung zur Domainauswahl. Der Dienst muss in der
AndroidManifest.xml
-Datei.Fügen Sie dem Geräte-Overlay eine Konfiguration hinzu, damit die Plattform an das
DomainSelectionService
-Implementierung.Die erforderlichen HAL-Radioschnittstellen für die Domainauswahl unterstützen.
Dieser Abschnitt enthält weitere Details zu diesen Schritten.
Diensteintrag in AndroidManifest.xml hinzufügen
Für Ihre App zur Domainauswahl, um den DomainSelectionService
-Dienst zu registrieren
mit dem Framework haben, fügen Sie der Manifestdatei einen Diensteintrag mit dem folgenden Code hinzu:
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>
In der Dienstdefinition in AndroidManifest.xml
muss Folgendes definiert werden:
für die Funktion zur Domainauswahl.
directBootAware="true"
: Ermöglicht es, den Dienst zu erkennen und auszuführen bevor der Nutzer das Gerät entsperrt. Der Dienst hat keinen Zugriff Geräteverschlüsselung, bevor der Nutzer das Gerät entsperrt. Weitere Informationen Informationen, Weitere Informationen finden Sie unter Unterstützung des Direct Boot-Modus und Dateibasierte Verschlüsselung.persistent="true"
: Lässt den Dienst dauerhaft ausführen. abgebremst wird, um Arbeitsspeicher freizugeben. Dieses Attribut funktioniert nur, wenn das Attribut ist eine System-App.permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
: ... dass nur ein Prozess mit der BerechtigungBIND_DOMAIN_SELECTION_SERVICE
die ihm zugewiesen sind, können sich an die App binden. So wird verhindert, dass sich betrügerische Apps da nur System-Apps die Berechtigung vom Dienst erteilt werden kann. Framework.
Außerdem muss der Dienst das Element intent-filter
mit der Eigenschaft
android.telephony.DomainSelectionService
Aktion. So kann das Framework
DomainSelectionService
.
Konfiguration im Geräte-Overlay definieren
Damit die Plattform sicher an den Dienst DomainSelectionService
gebunden werden kann, fügen Sie
die folgende Konfiguration im Geräte-Overlay:
config_domain_selection_service_component_name
: Der Parameter Komponentenname (ein vereinfachterComponentName
-String) für dieDomainSelectionService
-Dienst
Weil Android keine Apps unterstützt, die von Drittanbietern heruntergeladen werden können
DomainSelectionService
-Implementierungen verwenden, muss die Anwendung zur Domainauswahl eine
System-App, die sich in /system_ext/priv-app/
oder /product/priv-app/
befindet
Ordner. Das Framework prüft, ob der Paketname der Implementierung
entspricht dem Wert des Geräte-Overlays, damit nur vertrauenswürdige, vorinstallierte Apps
gebunden.
HAL-Funkschnittstellen unterstützen
Unterstützen Sie das folgende erforderliche Optionsfeld HAL, um die Funktion zur Domainauswahl zu aktivieren. Schnittstellen:
-
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);
Zertifizierungsstufe
Um zu testen, ob das Telefonie-Framework ordnungsgemäß auf den
DomainSelectionService
-Schnittstelle die CTS-Tests ausführen in
DomainSelectionServiceTestOnMockModem