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ı davranış sağlar) ve CellBroadcast ile ilgili gereksinimler için taşıyıcı testlerini ve sertifikasyonunu kolaylaştırmaya yardımcı olur (çünkü kod OEM'ler tarafından değiştirilemez) ). Bu modül güncellenebilir, yani normal Android sürüm döngüsünün dışındaki işlevsellik güncellemelerini alabilir.
Paket formatı
CellBroadcast modülü aşağıdaki hizmet ve uygulamadan oluşur.
CellBroadcastService hizmeti, CellBroadcast SMS kod çözmeyi, kablosuz acil durum uyarısı (WEA) 3.0 için coğrafi sınırlamayı, mesaj çoğaltma kontrollerini ve mesajların uygulamalara yayınlanmasını destekler. Tanımlı bir alandaki birden fazla cep telefonu kullanıcısına aynı anda mesaj göndermek için tasarlanmış, birden çoğa coğrafi hedefli ve coğrafi sınırlamalı bir 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ı (sarı ve başkanlık uyarıları gibi) işleyen ve bilgileri operatör 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 şekil CellBroadcast mesaj akışını göstermektedir.
Şekil 1. CellBroadcastReceiver mesaj akışı
Radyo arayüz katmanı (RIL),
InBoundSMSHandler
bir CDMA/GSM CellBroadcast SMS'i hakkında bilgi verir.Çerçeve, gelen mesajı ayrıştırmak ve işlemek için CellBroadcast SMS'ini CBS modülüne iletir.
Mesaj işlendikten sonra CellBroadcastService, amacı sistemin varsayılan CellBroadcastReceiver uygulamasına iletir.
CellBroadcastReceiver uygulaması mesajı kullanıcıya görüntüler.
Modül formatı
CellBroadcastService ve CellBroadcastReceiver uygulaması, Android 11 veya üstünü çalıştıran cihazlarda kullanılabilen tek bir APEX dosyasına ( com.android.cellbroadcast
) dahil edilmiştir. Modül, package/app/CellBroadcastReceiver
içindeki kodu içerir ve mevcut çerçeve sınıflarını packages/modules/CellBroadcastService
geçirir.
Modül bağımlılıkları
CellBroadcast modülü, yalnızca kararlı @SystemApi
( @hide
API'leri 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
Çalışma zamanı kaynak katmanlarını (RRO'lar) kullanarak yapılandırmayı özelleştirebilirsiniz.
İzin yapılandırması
CellBroadcast modülü, platform imzası yerine Google imzasıyla imzalanmıştır; bu, modülün imza izinlerine erişimini kaybettiği anlamına gelir. Bunun yerine Android 11, CellBroadcast modülü içinde com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY
yeni imza iznini tanımlar; Yalnızca modüldeki paketler aynı anahtarla imzalandığı için izin alabilir. Bu izin, CellBroadcastReceiver uygulamasının CellBroadcastService içindeki veritabanına tam erişime sahip olmasını sağlar.
Platform, acil durum uyarılarının geçmişine erişim için varsayılan sistem SMS uygulamasına android.permission.READ_CELL_BROADCASTS
çalışma zamanı iznini verir.
CellBroadcast modülünün entegrasyonu
Bu bölümde CellBroadcast modülünün nasıl entegre edileceği açıklanmaktadır.
Ayarlarla Entegrasyon
CellBroadcast ayarlarının nereye entegre edileceğine Ayarlar uygulamasında 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ş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 Mesajlaşma uygulamasında bu, Ayarlar > Gelişmiş > Acil durum uyarısı bölümüne 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
Bir çalışma zamanı kaynak katmanı kullanarak aşağıdaki yapılandırmayı geçersiz kılarak, varsayılan mesajlaşma uygulamasında CellBroadcast mesajlarının görüntülenmesini etkinleştirebilirsiniz.
<item type="bool" name="enable_write_alerts_to_sms_inbox" />
İzin vermek 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
yamasına bakın.
CellBroadcastReceiver uygulamasını başlatma
CellBroadcastReceiver uygulaması aşağıdaki başlatma noktalarına sahiptir.
Ayarlar uygulaması menüsü.
CellBroadcast mesaj geçmişine bağlanan mesaj uygulaması gibi bir uygulama (üçüncü taraf uygulamalar dahil).
(İsteğe bağlı) OEM tarafından eklenen Android ana ekranından bir başlatma simgesi. Ayrıntılar için bkz. Başlatma simgesi ekleme .
CellBroadcastReceiver uygulama ayarları
Aşağıdaki ekran görüntüleri CellBroadcastReceiver uygulamasının ayarlar menüsünü göstermektedir.
Şekil 2. CellBroadcastReceiver uygulaması ayarları menüsü
Şekil 3. Acil durum uyarı geçmişi ekranı
Başlatma simgeleri ekleme
Uygulama başlatıcıdan ve kendi başlatma simgelerinizden CellBroadcast mesaj geçmişine erişmeyi etkinleştirebilirsiniz.
Uygulama başlatıcıdan mesaj 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 etkinleştirmek için, *#*#CMAS#*#* (tuş takımında *#*#2627#*#* ), bir çevirici uygulamasının *#*# biçimindeki özel çevirici kodunu dinlemesi gerekir. #*#* code girin ve sendDialerSpecialCode
genel yöntemini kullanarak kodu işleyin.
Alan bilgisi gereksinimi: Kanal 50
Kanal 50, operatörlerin bölgeyle ilgili bilgileri yayınlaması için özel bir kanaldır (Güney Afrika'daki MTN hariç). Bu kanal için yayın mesajları açılır bir iletişim kutusu veya bildirimle sonuçlanmaz. Bunun yerine, yayın mesajları Ayarlar menüsünün SIM durumunda veya durum çubuğunda (örneğin bir posta kodunun görüntülenmesi) görünür.
Android CellBroadcastService uygulaması, yayın Kanalı 50 bilgilerini almak için Ayarlar ve SysUI uygulamalarına yönelik hücre 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 bir RRO aracılığıylaconfig_area_info_receiver_packages
alıcı paket adını geçersiz kılın.CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE
bağlanı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 uygulaması 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ı kaynak katmanlarını (RRO'lar) kullanabilirsiniz (örneğin, iletişim kutularındaki bildirimlerin ve boyutların rengini ö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 olarak:
Overlayable yapılandırmaların bir listesi için
overlayable.xml
dosyasına bakın.Örnek bir uygulama için AOSP'deki
RROSampleTestApp
bakın.
Uygulamada kullanıcı arayüzü dizesi çeviri kaynakları eksikse veya çeviriler beklentilerinizi karşılamıyorsa, bir RRO kullanarak çeviri kaynaklarını geçersiz kılabilir veya dize çevirilerini CellBroadcast modülüne aktarmak için Google çeviri ekibiyle birlikte çalışabilirsiniz. Çeviri kaynaklarını geçersiz kılarsanız, geçersiz kılmaya izin vermek için Google'ın bu dizeleri overlayable.xml
dosyasında göstermesi gerekir. Kullanıcı arayüzü özelleştirmesi için daha fazla yapılandırmaya ihtiyacınız varsa CellBroadcast destek grubuyla iletişime geçin.
Veriler taşınıyor
Android 11, CellBroadcast modülüne yükseltme yapan cihazlar için uygulama verilerini (kullanıcı ayarları ve acil durum uyarı geçmişleri dahil) koruyan ve aktaran bir mekanizma olan eski bir CellBroadcast uygulamasını içerir. CellBroadcast modülünü kullanan Android uygulamaları, veri geçişi için eski CellBroadcast uygulamasını yapılarına dahil etmelidir. Uygulamanız özel bir CellBroadcast çözümü kullanıyorsa verileri korumak için bir CellBroadcastContentProvider APK'sı tanımlamanız gerekir (eski hücre yayını APK'sını sonraki bir sürümde güvenle kaldırabilirsiniz).
CellBroadcast modülünü kullanacak şekilde yükseltilen cihazlarda modül, iyi tanımlanmış cellbroadcast-legacy
yetkilisi aracılığıyla AOSP LegacyCellBroadcastApp'tan veya OEM tanımlı CellBroadcastContentProvider APK'sından veri alır.
OEM tanımlı bir CellBroadcastContentProvider APK'sını kullanma
CellBroadcastContentProvider APK'sını tanımlarken APK'nın bu spesifikasyonlara uyması gerekir.
APK
cellbroadcast-legacy
yetkisine sahip birContentProvider
nesnesi aracılığıyla yalnızca veritabanının veSharedPreferences
içeriğini ortaya çıkaran ve üçüncü taraf uygulamalar tarafından erişilemeyen, başsız bir APK'dır.APK, OEM'in kendi gizli API şemasını barındırmaya devam edebileceği OEM tarafından geliştirilmiş ve ona aittir.
SharedPreferences
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 bir listesidir. Veriler
ContentProvider.call
yöntemi içinSharedPreferences
gelir.
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:
- Yetkili:
@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,
yönelik bir referans uygulaması için LegacyCellBroadcastContentProvider
bakın.
Test yapmak
Android Uyumluluk Test Paketi (CTS), uygulamaya bağlı sistem API'lerinin işlevselliğini doğrular. Ayrıca CellBroadcast modülü unit tests/testappsp
da çalıştırabilirsiniz.
OEM bir aygıt için CMAS gizli kodunu etkinleştirmişse bu aygıt aşağıdaki özelliklerle hata ayıklama modunu destekleyebilir.
Test uyarıları, açma/kapama düğmesiyle Diğer Uyarılar altında gruplandırılır.
Geçmiş, yinelenen iletiler veya başka bir dildeki iletiler gibi alınan ancak görüntülenmeyen tüm iletileri içerir.
Mesajlar, seri numarası, mesaj kimliği ve son kullanma tarihi dahil olmak üzere mevcut tüm parametreleri görüntüler.
Hata ayıklama modunu etkinleştirmek için çeviricide *#*#CMAS#*#* tuşlayın.
Temas etmek
CellBroadcast modülü hakkında daha fazla ayrıntı veya sorularınız için CellBroadcast destek grubuyla iletişime geçin.