Domainauswahl

Auf Geräten mit Android 15 oder höher können Sie die System-API DomainSelectionService nutzen, um die Auswahl der Domain zwischen dem IMS-Dienst und Legacy-Diensten über leitungsvermittelte Netzwerke zu implementieren. DomainSelectionService ist eine genau definierte Schnittstelle zwischen der Android-Plattform und einer vom Anbieter bereitgestellten Implementierung der Domain-Auswahl. Über diese Schnittstelle kann die Anbieterimplementierung der Plattform Signalisierungsinformationen wie die Domain, über die ausgehende Anrufe und SMS abgesetzt werden, und den bevorzugten Netzwerktyp beim Scannen des Netzwerks bereitstellen.

Architekturdiagramm des Domain Selection Service, das die Interaktion mit der Android-Plattform und Anbieterimplementierungen zeigt

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 dem Open-Source-Projekt für Android (Android Open Source Project, 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 von Domains auf einem Android-Gerät:

  1. Erstellen Sie eine App zur Auswahl von Domains. Der Dienst muss in der Datei AndroidManifest.xml definiert sein.

  2. Fügen Sie dem Geräte-Overlay eine Konfiguration hinzu, damit die Plattform an die DomainSelectionService-Implementierung gebunden werden kann.

  3. Unterstützen Sie die erforderlichen Radio-HAL-Schnittstellen (Hardware Abstraction Layer) 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 von Domains den Dienst DomainSelectionService beim Framework registrieren kann, 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>

Die Dienstdefinition in AndroidManifest.xml muss die folgenden Attribute definieren, damit die Funktion zur Auswahl von Domains 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 auf dem Gerät verschlüsselten Speicher zugreifen, bevor der Nutzer das Gerät entsperrt. Weitere Informationen finden Sie unter Direct Boot-Modus unterstützen und Dateibasierte Verschlüsselung.
  • persistent="true": Sorgt dafür, dass der Dienst dauerhaft ausgeführt wird, ohne vom System beendet zu werden , um Speicher freizugeben. Dieses Attribut funktioniert nur , wenn die App als System-App erstellt wird.
  • permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE": Prüft, ob nur ein Prozess, dem die BIND_DOMAIN_SELECTION_SERVICE Berechtigung erteilt wurde, an die App gebunden werden kann. So wird verhindert, dass eine schädliche App an den Dienst gebunden wird, da nur System-Apps vom Framework die Berechtigung erhalten können.

Der Dienst muss auch das Element intent-filter 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 Dienst DomainSelectionService gebunden werden kann, fügen Sie dem Geräte-Overlay die folgende Konfiguration hinzu:

Da Android keine Apps mit herunterladbaren DomainSelectionService-Implementierungen von Drittanbietern unterstützt, muss die App zur Auswahl von Domains 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.

Radio-HAL-Schnittstellen unterstützen

Damit die Funktion zur Auswahl von Domains aktiviert werden kann, müssen die folgenden erforderlichen Radio-HAL-Schnittstellen unterstützt werden:

  • IRadioNetwork

    void setEmergencyMode(int serial, EmergencyMode emcModeType);
    void triggerEmergencyNetworkScan(int serial,
            EmergencyNetworkScanTrigger request);
    void cancelEmergencyNetworkScan(int serial, boolean resetScan);
    void exitEmergencyMode(int serial);
    
  • IRadioNetworkIndication

    void emergencyNetworkScanResult(RadioIndicationType type,
            EmergencyRegResult result);
    

Validierung

Um zu testen, ob das Telephony-Framework ordnungsgemäß auf die DomainSelectionService Schnittstelle reagiert, führen Sie die CTS-Tests (Compatibility Test Suite) aus in DomainSelectionServiceTestOnMockModem.