Auf Geräten mit Android 15 oder höher können Sie die Auswahl der Domain zwischen dem IMS-Dienst und Legacy-Diensten über leitungsvermittelte Netzwerke mithilfe der System-API DomainSelectionService
implementieren. DomainSelectionService
ist eine genau definierte Schnittstelle zwischen der Android-Plattform und einer vom Anbieter bereitgestellten Implementierung der Domänenauswahl. Über diese Schnittstelle kann die Anbieterimplementierung der Plattform Signalisierungsinformationen wie die Domain, über die ausgehende Anrufe und SMS abgesetzt werden, und die bevorzugte Art des Netzwerks beim Scannen des Netzwerks bereitstellen.
Abbildung 1: Architekturdiagramm für die Funktion zur Auswahl von Domains
Beispiele und Quelle
Android bietet eine Referenzimplementierung für die Funktion zur Auswahl von Domains in AOSP unter TelephonyDomainSelectionService
. Eine detaillierte Dokumentation der DomainSelectionService
API finden Sie unter DomainSelectionService
und in den anderen Klassen der API.
Implementierung
So implementieren Sie die Funktion zur Auswahl der Domain auf einem Android-Gerät:
Erstellen Sie eine App zur Auswahl von Domains. Der Dienst muss in der Datei
AndroidManifest.xml
definiert werden.Fügen Sie dem Geräte-Overlay eine Konfiguration hinzu, damit die Plattform an die
DomainSelectionService
-Implementierung gebunden werden kann.Unterstützen Sie die erforderlichen Radio-HAL-Schnittstellen für die Funktion zur Auswahl von Domains.
In diesem Abschnitt finden Sie weitere Informationen zu diesen Schritten.
Diensteintrag in AndroidManifest.xml hinzufügen
Damit Ihre App zur Auswahl der Domain den DomainSelectionService
-Dienst im Framework registriert, fügen Sie der Manifestdatei einen Diensteintrag im folgenden Format hinzu:
<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
müssen die folgenden Attribute definiert sein, damit die Funktion zur Auswahl der Domain funktioniert.
directBootAware="true"
: Ermöglicht es dem Telefondienst, den Dienst zu erkennen und auszuführen, bevor der Nutzer das Gerät entsperrt. Der Dienst kann nicht auf den verschlüsselten Gerätespeicher zugreifen, bevor der Nutzer das Gerät entsperrt. Weitere Informationen finden Sie unter Direct Boot-Modus unterstützen und Dateibasierte Verschlüsselung.persistent="true"
: Ermöglicht, dass der Dienst dauerhaft ausgeführt wird und nicht vom System beendet wird, um Speicher freizugeben. Dieses Attribut funktioniert nur, wenn die App als System-App erstellt wird.permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
: Sorgt dafür, dass nur ein Prozess, dem die BerechtigungBIND_DOMAIN_SELECTION_SERVICE
gewährt wurde, eine Bindung an die App vornehmen kann. Dadurch wird verhindert, dass eine betrügerische App eine Bindung an den Dienst vornehmen kann, da nur System-Apps die Berechtigung vom Framework erhalten können.
Der Dienst muss auch das intent-filter
-Element mit der Aktion android.telephony.DomainSelectionService
angeben. So kann das Framework den Dienst DomainSelectionService
finden.
Konfiguration im Geräte-Overlay definieren
Damit die Plattform sicher an den DomainSelectionService
-Dienst gebunden werden kann, fügen Sie dem Geräte-Overlay die folgende Konfiguration hinzu:
config_domain_selection_service_component_name
: Der Komponentenname (ein vereinfachterComponentName
-String) für denDomainSelectionService
-Dienst.
Da Android keine Apps mit herunterladbaren DomainSelectionService
-Implementierungen von Drittanbietern unterstützt, muss die App zur Auswahl der Domain eine System-App sein, die sich im Ordner /system_ext/priv-app/
oder /product/priv-app/
befindet. Das Framework prüft, ob der Paketname der Implementierung mit dem Wert des Geräte-Overlays übereinstimmt, um sicherzustellen, dass nur vertrauenswürdige, vorinstallierte Apps gebunden werden.
Unterstützung von Radio-HAL-Schnittstellen
Damit die Funktion zur Auswahl von Domains aktiviert werden kann, müssen die folgenden erforderlichen Radio HAL-Schnittstellen unterstützt werden:
-
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 richtig auf die DomainSelectionService
-Schnittstelle reagiert, führen Sie die CTS-Tests in DomainSelectionServiceTestOnMockModem
aus.