Android 15 veya sonraki sürümleri çalıştıran cihazlarda, DomainSelectionService
sistem API'sini kullanarak devre anahtarlamalı ağlar üzerinden IMS hizmeti ile eski hizmetler arasında alan seçimi uygulayabilirsiniz. DomainSelectionService
Android platformu ile satıcı tarafından sağlanan alan seçimi uygulaması arasında iyi tanımlanmış bir arayüzdür. Bu arayüz, satıcı uygulamasının giden aramaların ve SMS'lerin yerleştirildiği alan adı ile ağ taramasında ağ türü tercihi gibi sinyal bilgilerini platforma sağlamasına olanak tanır.
1. şekil. Alan seçimi özelliği için mimari şeması
Örnekler ve kaynak
Android, AOSP'deki alan seçimi özelliği için TelephonyDomainSelectionService
adresinde referans uygulama sağlar. DomainSelectionService
API'siyle ilgili ayrıntılı dokümanlar için DomainSelectionService
ve API'deki diğer sınıflara bakın.
Uygulama
Alan seçimi özelliğini bir Android cihazda uygulamak için aşağıdaki adımlar gereklidir:
Alan adı seçimi 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 ayrıntılı bilgi verilmektedir.
AndroidManifest.xml dosyasına hizmet girişi ekleyin
Alan seçimi uygulamanızın DomainSelectionService
hizmetini çerçeveye kaydetmesi için aşağıdaki biçimi kullanarak manifest dosyasına 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>
AndroidManifest.xml
içindeki hizmet tanımında, alan seçimi özelliğinin çalışması için aşağıdaki özellikler tanımlanmalıdır.
directBootAware="true"
: Kullanıcı cihazın kilidini açmadan önce hizmetin telefon tarafından bulunup çalıştırılmasına olanak tanır. Hizmet, kullanıcı cihazın kilidini açmadan önce cihazda şifrelenmiş depolamaya erişemez. Daha fazla bilgi için Doğrudan başlatma modunu destekleme ve Dosya tabanlı şifreleme başlıklı makaleleri inceleyin.persistent="true"
: Hizmetin sürekli olarak çalışmasına ve belleği geri kazanmak için sistem tarafından sonlandırılmamasına olanak tanır. Bu özellik yalnızca uygulama sistem uygulaması olarak oluşturulduysa çalışır.permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
: YalnızcaBIND_DOMAIN_SELECTION_SERVICE
izni verilmiş bir işlemin uygulamaya bağlanmasını sağlar. Bu, kötü amaçlı bir uygulamanın hizmete bağlanmasını engeller. Çünkü çerçeve tarafından yalnızca sistem uygulamalarına izin verilebilir.
Hizmet, intent-filter
öğesini android.telephony.DomainSelectionService
işlemiyle de belirtmelidir. Bu, çerçevenin DomainSelectionService
hizmetini bulmasını sağlar.
Cihaz yer paylaşımında yapılandırmayı tanımlama
Platformun DomainSelectionService
hizmetine güvenli bir şekilde bağlanması 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şComponentName
dizesi)
Android, üçüncü taraf indirilebilir DomainSelectionService
uygulamalarını desteklemediğinden alan adı seçimi uygulaması, /system_ext/priv-app/
veya /product/priv-app/
klasöründe bulunan bir sistem uygulaması olmalıdır. Yalnızca güvenilir ve önceden yüklenmiş uygulamaların bağlanmasını sağlamak için çerçeve, uygulamanın paket adının cihaz yerleşimi 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.