CellBroadcast modülü, OEM'ler için tekrarlanan çalışmaları azaltır (bu da Android ekosistemindeki parçalanmayı azaltır ve son kullanıcılara tutarlı bir davranış sağlar) ve CellBroadcast ile ilgili şartlar için operatör testini ve sertifikasyonunu kolaylaştırır (kod OEM'ler tarafından değiştirilemediğinden). Bu modül güncellenebilir. Yani normal Android sürüm döngüsünün dışında işlevsellik güncellemeleri alabilir.
Paket biçimi
CellBroadcast modülü aşağıdaki hizmet ve uygulamadan oluşur.
CellBroadcastService hizmeti, CellBroadcast SMS'nin kodunu çözme, kablosuz acil durum uyarısı (WEA) 3.0 için coğrafi sınırlama, mesaj çakışması kontrolleri ve mesajları uygulamalara yayınlama işlemlerini destekler. Belirli bir alandaki birden fazla cep telefonu kullanıcısına aynı anda mesaj göndermek için tasarlanmış, coğrafi hedeflemeli ve coğrafi sınırlı bir bire çok mesajlaşma hizmetidir. Hizmet, ETSI GSM komitesi 3GPP tarafından tanımlanır ve telekomünikasyon standartlarının bir parçasıdır.
CellBroadcastReceiver uygulaması, acil durum ve acil olmayan uyarıları (ör. kayıp çocuk ve cumhurbaşkanlığı uyarıları) işleyen ve bilgileri operatöre ve bölgesel düzenlemelere göre son kullanıcılara sunan varsayılan bir sistem uygulamasıdır.
CellBroadcast mesaj akışı
Aşağıdaki şekilde CellBroadcast mesaj akışı gösterilmektedir.
Şekil 1. CellBroadcastReceiver mesaj akışı
Radyo arayüzü katmanı (RIL), CDMA/GSM CellBroadcast SMS'si hakkında
InBoundSMSHandler
'ü bilgilendirir.Çerçeve, gelen mesajı ayrıştırmak ve işlemek için CellBroadcast SMS'yi CBS modülüne yönlendirir.
CellBroadcastService, mesaj işlendikten sonra intent'i sistemdeki varsayılan CellBroadcastReceiver uygulamasına yönlendirir.
CellBroadcastReceiver uygulaması mesajı kullanıcıya gösterir.
Modül biçimi
CellBroadcastService ve CellBroadcastReceiver uygulaması, Android 11 veya sonraki sürümleri çalıştıran cihazlarda kullanılabilen tek bir APEX dosyasına (com.android.cellbroadcast
) dahildir. Modül, package/app/CellBroadcastReceiver
kodunda yer alır ve mevcut çerçeve sınıflarını packages/modules/CellBroadcastService
'e taşır.
Modül bağımlılıkları
CellBroadcast modülü, yalnızca kararlı @SystemApi
(@hide
API'leri yok) kullanarak çerçeveyle etkileşim kurar ve aşağıdaki statik kitaplıklara bağlıdır.
Androidx.legacy_legacy-support-v13
Androidx.recyclerview_recyclerview
Androidx.preference_preference
androidx.legacy_legacy-preference-v14
androidx.appcompat_appcompat
Çalışma zamanında kaynak yer paylaşımlarını (RRO'lar) kullanarak yapılandırmayı özelleştirebilirsiniz.
İzin yapılandırması
CellBroadcast modülü, platform imzası yerine Google imzası ile imzalanır. Bu, modülün imza izinlerine erişimini kaybetmesi anlamına gelir.
Bunun yerine Android 11, yeni imza iznini com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
CellBroadcast modülü içinde tanımlar. Aynı anahtarla imzalandıkları için yalnızca modüldeki paketler bu izni alabilir. Bu izin, CellBroadcastReceiver uygulamasının CellBroadcastService içindeki veritabanına tam erişmesine olanak tanır.
Platform, varsayılan sistem SMS uygulamasına android.permission.READ_CELL_BROADCASTS
çalışma zamanında acil durum uyarılarının geçmişine erişme izni verir.
CellBroadcast modülünü entegre etme
Bu bölümde, CellBroadcast modülünün nasıl entegre edileceği açıklanmaktadır.
Ayarlar ile entegrasyon
CellBroadcast ayarlarının Ayarlar uygulamasında nereye entegre edileceğine karar verebilirsiniz (son kullanıcılar CellBroadcast ayarları sayfasına Ayarlar > Uygulamalar ve Bildirimler > Gelişmiş > Acil durum uyarısı'ndan erişebilir). CellBroadcastReceiver uygulamasını Ayarlar uygulamasından başlatmak için aşağıdaki ayar yapılandırmalarını com.android.cellbroadcastreceiver
paket adıyla değiştirin.
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>
Mesajlaşma uygulamalarıyla entegrasyon
CellBroadcast mesaj geçmişini açmak için mesajlaşma uygulamalarına bir uygulama bağlantısı entegre edebilirsiniz. Android Mesajlar uygulamasında bu ayar Ayarlar > Gelişmiş > Acil durum uyarısı'na entegre edilmiştir. Kendi mesajlaşma uygulamanıza bağlantı entegre etmek için mesajlaşma uygulamasında yolu tanımlayın ve CellBroadcast modülünün bileşen adını com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity
olarak yapılandırın.
SMS gelen kutusuyla entegrasyon
Bir çalışma zamanı kaynak yer paylaşımı kullanarak aşağıdaki yapılandırmayı geçersiz kılarak CellBroadcast mesajlarının varsayılan mesajlaşma uygulamasında gösterilmesini etkinleştirebilirsiniz.
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
İzin verme işlemi CellBroadcast modülünün kapsamı dışında olduğundan uçtan uca destek sunmak için CellBroadcast modülüne AppOpsManager.OP_WRITE_SMS
iznini vermeniz gerekir. AOSP referans uygulaması için bu SmsApplication.java
yamasını inceleyin.
CellBroadcastReceiver uygulamasını başlatın
CellBroadcastReceiver uygulamasında aşağıdaki başlatma noktaları vardır.
Ayarlar uygulaması menüsü.
CellBroadcast mesaj geçmişine bağlantı veren bir mesajlar uygulaması gibi bir uygulama (üçüncü taraf uygulamaları dahil).
(İsteğe bağlı) OEM tarafından Android ana ekranına eklenen başlatma simgesi. Ayrıntılar için Başlatma simgesi ekleme başlıklı makaleyi inceleyin.
CellBroadcastReceiver uygulama ayarları
Aşağıdaki ekran görüntülerinde CellBroadcastReceiver uygulama ayarları menüsü gösterilmektedir.
Şekil 2. CellBroadcastReceiver uygulama ayarları menüsü
Şekil 3. Acil durum uyarısı geçmişi ekranı
Başlatma simgeleri ekleme
Uygulama başlatıcıdan ve kendi başlatıcı simgelerinizden CellBroadcast mesaj geçmişine erişimi etkinleştirebilirsiniz.
Uygulama başlatıcıdan ileti geçmişine erişimi etkinleştirmek için bir RRO kullanarak aşağıdaki yapılandırmayı geçersiz kılın.
<item type="bool" name="show_message_history_in_launcher" />
AOSP varsayılan simgesini geçersiz kılmak için bir RRO kullanarak aşağıdaki yapılandırmayı geçersiz kılın.
<!-- Customize launcher icon for cellbroadcast history --> <item type="mipmap" name="ic_launcher_cell_broadcast" />
CMAS gizli kodunu etkinleştirme
CMAS gizli kodunu (*#*#CMAS#*#* (numara çevirme tuş takımında *#*#2627#*#*)) etkinleştirmek için bir çevirici uygulaması, *#*#code#*#* biçiminde özel çevirici kodunu dinlemeli ve kodu sendDialerSpecialCode
herkese açık yöntemini kullanarak işlemelidir.
Alan bilgisi koşulu: Channel 50
Channel 50, operatörlerin bölgeyle ilgili bilgileri yayınladığı özel bir kanaldır (Güney Afrika'daki MTN hariç). Bu kanalda, yayın mesajları iletişim kutusu veya bildirim oluşturmaz. Bunun yerine, yayın mesajları Ayarlar menüsünün SIM durumunda veya durum çubuğunda (ör. posta kodu gösterilir) görünür.
Android CellBroadcastService uygulaması, Ayarlar ve SysUI uygulamalarının 50. kanalın yayın bilgilerini alabilmesi için hücresel yayın hizmetinde aşağıdaki API'ler için destek sağlar. Bunu uygulamak için aşağıdakileri yapın:
android.telephony.action.AREA_INFO_UPDATED
yayınını kaydedin ve RRO aracılığıyla alıcı paket adınıconfig_area_info_receiver_packages
geçersiz kılın.CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
'e bağlanır.
Ayarlar ve SysUI uygulamaları, CellBroadcast modülünün kapsamı dışında olduğundan uçtan uca destek sunmak için değişikliklerinizi SystemUI veya Ayarlar uygulamasında uygulamanız gerekir. Referans uygulama için CellBroadcastService Ayarları uygulamasına bakın.
Özelleştirme
CellBroadcast modülünün kaynak kodunu doğrudan değiştiremezsiniz ancak parametreleri etkinleştirmek (veya devre dışı bırakmak) için çalışma zamanında kaynak yer paylaşımlarını (RRO'lar) kullanabilirsiniz (örneğin, bildirimlerin rengini ve iletişim kutularındaki boyutları özelleştirebilirsiniz). CellBroadcast modülünde kullanılan parametrelerin varsayılan değerlerini geçersiz kılmak için hedef paket adını com.android.cellbroadcastreceiver
olarak değiştirin. Ek bilgiler:
Yerleştirilebilir yapılandırmaların listesi için
overlayable.xml
bölümüne bakın.Örnek uygulama için AOSP'teki
RROSampleTestApp
bölümüne bakın.
Uygulamada kullanıcı arayüzü dize çeviri kaynakları eksikse veya çeviriler beklentilerinizi karşılamıyorsa bir RRO kullanarak çeviri kaynaklarını geçersiz kılabilir ya da dize çevirilerini CellBroadcast modülüne aktarmak için Google çeviri ekibiyle birlikte çalışabilirsiniz. Çeviri kaynaklarını geçersiz kılarsanız Google'ın geçersiz kılmaya izin vermek için bu dizeleri overlayable.xml
içinde göstermesi gerekir. Kullanıcı arayüzü özelleştirme için daha fazla yapılandırmaya ihtiyacınız varsa CellBroadcast destek grubu ile iletişime geçin.
Verileri taşı
Android 11, CellBroadcast modülüne yükseltilen cihazlarda uygulama verilerini (kullanıcı ayarları ve acil durum uyarısı geçmişleri dahil) korumak ve taşımak için kullanılan eski bir CellBroadcast uygulaması içerir. CellBroadcast modülünü kullanan Android uygulamaları, veri taşıma işlemi için derlemelerine eski CellBroadcast uygulamasını eklemelidir. Uygulamanızda özel bir CellBroadcast çözümü kullanılıyorsa verileri korumak için bir CellBroadcastContentProvider APK'sı tanımlamanız gerekir (sonraki bir sürümde eski CellBroadcast APK'sını güvenle kaldırabilirsiniz).
CellBroadcast modülü kullanılacak şekilde yükseltilen cihazlarda modül, iyi tanımlanmış cellbroadcast-legacy
yetkilisi aracılığıyla AOSP LegacyCellBroadcastApp'ten veya OEM tarafından tanımlanan CellBroadcastContentProvider APK'sından veri alır.
OEM tarafından tanımlanan bir CellBroadcastContentProvider APK'sı kullanma
CellBroadcastContentProvider APK'sı tanımlanırken APK bu spesifikasyonlara uymalıdır.
APK, yalnızca veritabanının içeriğini gösteren ve
cellbroadcast-legacy
yetkisi olan birContentProvider
SharedPreferences
nesnesi aracılığıyla üçüncü taraf uygulamaları tarafından erişilemeyen bir başsız APK'dır.APK, OEM tarafından geliştirilir ve OEM'nin gizli API şemasını barındırmaya devam edebileceği OEM'ye aittir.
SharedPreferences
'ü CellBroadcast modülüne taşımak için CellBroadcastContentProvider APK'sı, aşağıdaki parametrelerle ContentProvider.call
yöntemini desteklemelidir:
- Yetki:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- Yöntem:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
Arg:
@SystemAPI CellBroadcast.Preference
Bu, CellBroadcast modülü için desteklenen paylaşılan tercih anahtarlarının listesidir. Veriler,
ContentProvider.call
yöntemi içinSharedPreferences
kaynağından gelir.
Mesaj geçmişini CellBroadcast modülüne taşımak için CellBroadcastContentProvider APK'sı, aşağıdaki parametrelerle ContentProvider.query
yöntemini desteklemelidir:
- Yetki:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. Sorgu sütunları, CellBroadcast modülü için desteklenen mesaj özelliklerini listeler.ContentProvider.query
yöntemi için veri alır (veritabanınızdan).
CellBroadcastContentProvider,
için referans uygulama için LegacyCellBroadcastContentProvider
bölümüne bakın.
Test
Android Uyumluluk Test Paketi (CTS), uygulamaya bağımlı sistem API'lerinin işlevini doğrular. CellBroadcast modülünü de çalıştırabilirsinizunit tests/testappsp
.
OEM, bir cihaz için CMAS gizli kodunu etkinleştirdiyse bu cihaz, aşağıdaki özelliklerle hata ayıklama modunu destekleyebilir.
Test amaçlı uyarılar, Diğer Uyarılar altında bir açma/kapatma düğmesiyle gruplandırılır.
Geçmiş, alınan ancak görüntülenmeyen tüm iletileri (ör. yinelenen iletiler veya başka bir dilde gönderilen iletiler) içerir.
Mesajlar; seri numarası, ileti kimliği ve geçerlilik bitiş tarihi dahil olmak üzere kullanılabilen tüm parametreleri gösterir.
Hata ayıklama modunu etkinleştirmek için çeviricide *#*#CMAS#*#* kodunu girin.
İletişim
CellBroadcast modülüyle ilgili daha fazla bilgi edinmek veya sorularınız için CellBroadcast destek grubu ile iletişime geçin.