Dienst zur Domainauswahl

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.

Domainauswahl-Architektur

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:

  1. Erstellen Sie eine Anwendung zur Domainauswahl. Der Dienst muss in der AndroidManifest.xml-Datei.

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

  3. 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 Berechtigung BIND_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:

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:

  • 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);
    

Zertifizierungsstufe

Um zu testen, ob das Telefonie-Framework ordnungsgemäß auf den DomainSelectionService-Schnittstelle die CTS-Tests ausführen in DomainSelectionServiceTestOnMockModem