CellBroadcast modülü, OEM'lerin tekrarlayan çabalarını azaltır (bu da Android ekosistemindeki parçalanmayı azaltır ve son kullanıcılara tutarlı davranış sağlar). Ayrıca, CellBroadcast ile ilgili gereksinimler için operatör testini ve sertifikalandırmayı kolaylaştırır (çünkü kod, OEM'ler tarafından değiştirilemez). Bu modül güncellenebilir. Yani normal Android sürüm döngüsü 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 kod çözme, kablosuz acil durum uyarısı (WEA) 3.0 için coğrafi sınırlama, mesaj kopyalama kontrolleri ve mesajları uygulamalara yayınlama özelliklerini destekler. Belirli bir alandaki birden fazla cep telefonu kullanıcısına aynı anda mesaj göndermek için tasarlanmış, çoktan bire coğrafi hedefli ve coğrafi sınırlı bir mesajlaşma hizmetidir. Hizmet, ETSI GSM komitesi ve 3GPP tarafından tanımlanır ve telekomünikasyon standartlarının bir parçasıdır.
CellBroadcastReceiver uygulaması, acil durum ve acil durum dışı uyarıları (ör. amber ve başkanlık uyarıları) işleyen ve operatör ile bölgesel düzenlemelere göre bilgileri son kullanıcılara sunan varsayılan bir sistem uygulamasıdır.
Hücre yayını mesaj akışı
Aşağıdaki şekilde CellBroadcast mesaj akışı gösterilmektedir.
1. şekil. CellBroadcastReceiver mesaj akışı
Radyo arayüzü katmanı (RIL),
InBoundSMSHandler
öğesini CDMA/GSM CellBroadcast SMS hakkında bilgilendirir.Çerçeve, gelen mesajı ayrıştırmak ve işlemek için CellBroadcast SMS'i CBS modülüne yönlendirir.
İleti işlendikten sonra CellBroadcastService, intent'i sistemin 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ında (com.android.cellbroadcast
) yer alır. Modül, package/app/CellBroadcastReceiver
içinde kod içerir ve mevcut çerçeve sınıflarını packages/modules/CellBroadcastService
'ye taşır.
Modül bağımlılıkları
CellBroadcast modülü, yalnızca kararlı @SystemApi
(@hide
API'ler yok) kullanarak çerçeveyle etkileşime girer 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
Yapılandırmayı çalışma zamanı kaynak katmanlarını (RRO'lar) kullanarak özelleştirebilirsiniz.
İzin yapılandırması
CellBroadcast modülü, platform imzası yerine Google imzasıyla imzalanır. Bu nedenle modül, imza izinlerine erişimini kaybeder.
Bunun yerine Android 11, CellBroadcast modülünde yeni imza izni com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
tanımlar. Aynı anahtarla imzalandıkları için yalnızca modüldeki paketler izni alabilir. Bu izin, CellBroadcastReceiver uygulamasının CellBroadcastService içindeki veritabanına tam erişim sağlamasına olanak tanır.
Platform, acil durum uyarılarının geçmişine erişmek için varsayılan sistem SMS uygulamasına android.permission.READ_CELL_BROADCASTS
çalışma zamanı izni
verir.
CellBroadcast modülünü entegre edin
Bu bölümde, CellBroadcast modülünün nasıl entegre edileceği açıklanmaktadır.
Ayarlarla entegrasyon
CellBroadcast ayarlarını Ayarlar uygulamasına nereye entegre edeceğinize karar verebilirsiniz
(son kullanıcılar CellBroadcast ayarları sayfasına Ayarlar > Uygulamalar ve Bildirimler > Gelişmiş > Acil durum uyarısı bölümünden erişir). CellBroadcastReceiver uygulamasını Ayarlar uygulamasından başlatmak için aşağıdaki ayar yapılandırmalarını paket adıyla com.android.cellbroadcastreceiver
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
Cell Broadcast mesaj geçmişini açmak için mesajlaşma uygulamalarına bir uygulama bağlantısı entegre edebilirsiniz. Android Mesajlar uygulamasında bu özellik Ayarlar > Gelişmiş > Acil durum uyarısı'na entegre edilmiştir. Kendi mesajlaşma uygulamanıza bir 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
Aşağıdaki yapılandırmayı çalışma zamanı kaynak katmanı kullanarak geçersiz kılarak varsayılan mesajlaşma uygulamasında CellBroadcast mesajlarının 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 sağlamak için CellBroadcast modülüne AppOpsManager.OP_WRITE_SMS
iznini vermeniz gerekir. AOSP referans uygulaması için bu SmsApplication.java
yama dosyasını inceleyin.
CellBroadcastReceiver uygulamasını başlatın.
CellBroadcastReceiver uygulamasının aşağıdaki başlatma noktaları vardır.
Ayarlar uygulaması menüsü.
CellBroadcast mesaj geçmişine bağlanan bir mesaj uygulaması gibi bir uygulama (üçüncü taraf uygulamaları dahil).
(İsteğe bağlı) OEM tarafından eklenen, Android ana ekranındaki 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ü
3.Şekil Acil durum uyarısı geçmişi ekranı
Başlatma simgeleri ekleme
Uygulama başlatıcıdan ve kendi başlatma simgeleriniz aracılığıyla CellBroadcast mesaj geçmişine erişimi etkinleştirebilirsiniz.
Uygulama başlatıcıdan ileti geçmişine erişimi etkinleştirmek için aşağıdaki yapılandırmayı bir RRO kullanarak geçersiz kılın.
<item type="bool" name="show_message_history_in_launcher" />
AOSP'nin varsayılan simgesini geçersiz kılmak için 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 etkinleştirmek için *#*#CMAS#*#* (*#*#2627#*#* tuş takımında) çevirici uygulamasının *#*#code#*#* biçimindeki özel çevirici kodunu dinlemesi ve kodu sendDialerSpecialCode
genel yöntemini kullanarak işlemesi gerekir.
Alan bilgisi koşulu: Channel 50
50. kanal, operatörlerin bölgeyle ilgili bilgileri yayınlaması için özel bir kanaldır (Güney Afrika'daki MTN hariç). Bu kanalda yayın mesajları diyalog veya bildirim oluşturmaz. Bunun yerine, yayın mesajları Ayarlar menüsündeki SIM durumunda veya durum çubuğunda (örneğin, posta kodu göstererek) görünür.
Android CellBroadcastService uygulaması, Ayarlar ve SysUI uygulamalarının yayın Kanal 50 bilgilerini alması için hücre yayını hizmetindeki aşağıdaki API'leri destekler. Bunu uygulamak için aşağıdakileri yapın:
Yayın
android.telephony.action.AREA_INFO_UPDATED
kaydettirin ve bir RRO aracılığıyla alıcı paket adınıconfig_area_info_receiver_packages
geçersiz kılın.CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
ile bağlayın.
Ayarlar ve SysUI uygulamaları CellBroadcast modülünün kapsamı dışında olduğundan, uçtan uca destek sağlamak için değişikliklerinizi SystemUI veya Ayarlar uygulamasında uygulamanız gerekir. Referans uygulama için CellBroadcastService Settings uygulamasına bakın.
Özelleştirme
CellBroadcast modülünün kaynak kodunu doğrudan değiştiremezsiniz ancak çalışma zamanı kaynak yer paylaşımlarını (RRO'lar) kullanarak parametreleri etkinleştirebilir veya devre dışı bırakabilirsiniz (ö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:
Katmanlanabilir yapılandırmaların listesi için
overlayable.xml
bölümüne bakın.Örnek uygulama için AOSP'deki
RROSampleTestApp
bölümüne bakın.
Uygulamada kullanıcı arayüzü dizesi çeviri kaynakları eksikse veya çeviriler beklentinizi karşılamıyorsa RRO kullanarak çeviri kaynaklarını geçersiz kılabilir ya da dizelerin çevirilerini CellBroadcast modülüne aktarmak için Google çeviri ekibiyle birlikte çalışabilirsiniz. Çeviri kaynaklarını geçersiz kılarsanız Google, geçersiz kılmaya izin vermek için bu dizeleri overlayable.xml
içinde kullanıma sunmalıdır. Kullanıcı arayüzü özelleştirmesi için daha fazla yapılandırmaya ihtiyacınız varsa CellBroadcast destek grubu ile iletişime geçin.
Verileri taşı
Android 11'de eski bir CellBroadcast uygulaması bulunur. Bu uygulama, CellBroadcast modülüne yükseltme yapan cihazlarda uygulama verilerini (kullanıcı ayarları ve acil durum uyarısı geçmişleri dahil) korumak ve taşımak için kullanılan bir mekanizmadır. CellBroadcast modülünü kullanan Android uygulamaları, veri taşıma için eski CellBroadcast uygulamasını derlemelerine dahil etmelidir. Uygulamanızda özel bir CellBroadcast çözümü kullanılıyorsa verileri korumak için bir CellBroadcastContentProvider APK'sı tanımlamanız gerekir (eski Cell Broadcast APK'sını sonraki bir sürümde güvenli bir şekilde kaldırabilirsiniz).
CellBroadcast modülünü kullanacak şekilde yükseltilen cihazlarda modül, iyi tanımlanmış cellbroadcast-legacy
yetkisi aracılığıyla AOSP LegacyCellBroadcastApp veya OEM tarafından tanımlanan CellBroadcastContentProvider APK'sından veri getirir.
OEM tarafından tanımlanan CellBroadcastContentProvider APK'sını kullanma
CellBroadcastContentProvider APK'sı tanımlarken APK, aşağıdaki spesifikasyonlara uymalıdır.
APK, yalnızca veritabanının içeriğini başsız bir APK'dır ve
SharedPreferences
cellbroadcast-legacy
yetkisine sahip birContentProvider
nesnesi aracılığıyla sunulur ve üçüncü taraf uygulamaları tarafından erişilemez.APK, OEM tarafından geliştirilir ve OEM'ye aittir. OEM, gizli API şemasını barındırmaya devam edebilir.
SharedPreferences
öğesini CellBroadcast modülüne taşımak için CellBroadcastContentProvider APK'sının aşağıdaki parametrelerle ContentProvider.call
yöntemini desteklemesi gerekir:
- Yetkili:
@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 alınır.
Mesaj geçmişini CellBroadcast modülüne taşımak için CellBroadcastContentProvider APK'sının aşağıdaki parametrelerle ContentProvider.query
yöntemini desteklemesi gerekir:
- Yetki:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. Sorgu sütunları CellBroadcast modülü için desteklenen mesaj özelliklerini listeler.ContentProvider.query
yöntemi için verileri (veritabanınızdan) alır.
CellBroadcastContentProvider,
için referans uygulama hakkında bilgi edinmek istiyorsanız LegacyCellBroadcastContentProvider
bölümüne bakın.
Test
Android Uyumluluk Test Paketi (CTS), uygulamaya bağlı sistem API'lerinin işlevselliğini doğrular. CellBroadcast modülünü de çalıştırabilirsiniz
unit tests/testappsp
.
OEM, bir cihaz için CMAS gizli kodunu etkinleştirmişse bu cihaz, hata ayıklama modunu aşağıdaki özelliklerle destekleyebilir.
Test uyarıları, Diğer Uyarılar altında açma/kapatma düğmesiyle birlikte gruplandırılır.
Geçmiş, alınan ancak gösterilmeyen tüm iletileri (ör. yinelenen iletiler veya başka bir dildeki iletiler) içerir.
İletilerde seri numarası, ileti kimliği ve son kullanma tarihi gibi mevcut tüm parametreler gösterilir.
Hata ayıklama modunu etkinleştirmek için çeviricide *#*#CMAS#*#* numarasını çevirin.
İletişim
CellBroadcast modülü hakkında daha fazla bilgi veya sorunuz varsa CellBroadcast destek grubu ile iletişime geçin.