Android 15 veya sonraki sürümleri çalıştıran cihazlarda, DomainSelectionService
sistem API'sini kullanarak devre anahtarlı ağlar üzerinden IMS hizmeti ile eski hizmetler arasında alan seçimini uygulayabilirsiniz. DomainSelectionService
, Android platformu ile tedarikçi firma tarafından sağlanan alan seçimi uygulaması arasında iyi tanımlanmış bir arayüzdür. Bu arayüz, tedarikçi firma uygulamasının platforma giden aramaların ve SMS'lerin yerleştirildiği alan adı ve ağ taramasında ağ türü tercihi gibi sinyal bilgileri sağlamasına olanak tanır.
Şekil 1. Alan seçimi özelliğinin mimari şeması
Örnekler ve kaynak
Android, AOSP'deki alan seçimi özelliği için TelephonyDomainSelectionService
adresinde referans bir uygulama sağlar. DomainSelectionService
API ile ilgili ayrıntılı dokümanlar için DomainSelectionService
ve API'deki diğer sınıflara bakın.
Uygulama
Android cihazlarda alan seçimi özelliğini uygulamak için aşağıdaki adımlar gerekir:
Bir alan adı seçim uygulaması oluşturun. Hizmet,
AndroidManifest.xml
dosyasında tanımlanmalıdır.Platformun
DomainSelectionService
uygulamasına bağlanmasına izin vermek için cihaz yer paylaşımına bir yapılandırma ekleyin.Alan seçimi özelliği için gerekli radyo HAL arayüzlerini destekleyin.
Bu bölümde bu adımlarla ilgili daha fazla ayrıntı sunulmaktadır.
AndroidManifest.xml dosyasına hizmet girişi ekleme
Alan seçimi uygulamanızın DomainSelectionService
hizmetini çerçeveye kaydettirmesi için manifest dosyasına aşağıdaki biçimi kullanarak bir hizmet girişi ekleyin:
<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>
Alan seçimi özelliğinin çalışması için AndroidManifest.xml
hizmet tanımında aşağıdaki özellikler tanımlanmalıdır.
directBootAware="true"
: Kullanıcı cihazın kilidini açmadan önce hizmetin telefon tarafından bulunmasını ve çalıştırılmasını sağlar. Kullanıcı cihazın kilidini açmadan önce hizmet, cihaz tarafından şifrelenmiş depolamaya erişemez. Daha fazla bilgi için Doğrudan önyükleme modunu destekleme ve Dosya tabanlı şifreleme başlıklı makaleleri inceleyin.persistent="true"
: Hizmetin sürekli olarak çalışmasını sağlar ve sistem tarafından bellek kazanmak için kapatılmasını engeller. Bu özellik yalnızca uygulama sistem uygulaması olarak oluşturulmuşsa çalışır.permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
: YalnızcaBIND_DOMAIN_SELECTION_SERVICE
iznine sahip bir işlemin uygulamaya bağlanabilmesini sağlar. Çerçeve yalnızca sistem uygulamalarına izin verebileceğinden, bu izin kötü amaçlı bir uygulamanın hizmete bağlanmasını engeller.
Hizmet, android.telephony.DomainSelectionService
işlemini içeren intent-filter
öğesini de belirtmelidir. Bu sayede çerçeve, DomainSelectionService
hizmetini bulabilir.
Cihaz yer paylaşımında yapılandırmayı tanımlama
Platformun DomainSelectionService
hizmetine güvenli bir şekilde bağlanabilmesi için cihaz yer paylaşımına aşağıdaki yapılandırmayı ekleyin:
config_domain_selection_service_component_name
:DomainSelectionService
hizmetinin bileşen adı (düzleştirilmiş birComponentName
dizesi)
Android, üçüncü taraflarca indirilebilen DomainSelectionService
uygulamalarını desteklemediğinden alan seçimi uygulaması, /system_ext/priv-app/
veya /product/priv-app/
klasöründe bulunan bir sistem uygulaması olmalıdır. Çerçeve, yalnızca güvenilir, önceden yüklenmiş uygulamaların bağlanmasını sağlamak için uygulamanın paket adının cihaz yer paylaşımı değeriyle eşleşip eşleşmediğini doğrular.
Radyo HAL arayüzlerini destekleme
Alan seçimi özelliğini etkinleştirmek için aşağıdaki zorunlu radyo HAL arayüzlerini destekleyin:
-
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);
Doğrulama
Telefon çerçevesinin DomainSelectionService
arayüzüne doğru şekilde yanıt verdiğini test etmek için DomainSelectionServiceTestOnMockModem
'de CTS testlerini çalıştırın.