CellBroadcast modülü, OEM'ler için tekrarlayan çabaları azaltır (bu da Android ekosisteminde parçalanmayı azaltır ve son kullanıcılara tutarlı davranış sağlar) ve CellBroadcast ile ilgili gereksinimler için taşıyıcı testi ve sertifikalandırmayı 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 uygulamalara mesaj yayınlamayı destekler. Tanımlanmış bir alanda, aynı anda birden fazla cep telefonu kullanıcısına mesaj iletmek için tasarlanmış bire çok coğrafi hedefli ve coğrafi sınırlamalı 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 ve acil olmayan uyarıları (kehribar 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 arabirim katmanı (RIL),
InBoundSMSHandler
bir CDMA/GSM CellBroadcast SMS'i hakkında bilgilendirir.Çerçeve, gelen mesajı ayrıştırmak ve işlemek için CellBroadcast SMS'i CBS modülüne iletir.
İleti işlendikten sonra CellBroadcastService, amacı sistem 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 sonraki sürümleri çalıştıran cihazlarda kullanılabilen tek bir APEX dosyasında ( com.android.cellbroadcast
) bulunur. Modül, package/app/CellBroadcastReceiver
içindeki kodu içerir ve mevcut çerçeve sınıflarını packages/modules/CellBroadcastService
.
Modül bağımlılıkları
CellBroadcast modülü, çerçeve ile yalnızca kararlı @SystemApi
( @hide
API'leri yok) kullanarak 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 bir 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ıkları 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şmek için varsayılan sistem SMS uygulamasına android.permission.READ_CELL_BROADCASTS
çalışma zamanı izni verir.
CellBroadcast modülünü entegre etme
Bu bölüm, CellBroadcast modülünün nasıl entegre edileceğini açıklar.
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ı'ndan erişir). 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 bir uygulama bağlantısını mesajlaşma uygulamalarına entegre edebilirsiniz. Android Mesajlaşma uygulamasında bu, Ayarlar > Gelişmiş > Acil durum uyarısı'na entegre edilmiştir. Bir bağlantıyı kendi mesajlaşma uygulamanıza 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 kutusu ile entegrasyon
Bir çalışma zamanı kaynak yerleşimi 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" />
İzinlerin verilmesi 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
izni vermelisiniz. Bir AOSP başvuru 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 bir 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 uygulama ayarları menüsünü göstermektedir.
Şekil 2. CellBroadcastReceiver uygulama 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şmeyi 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#*#* ( *#*#2627#*#* tuş takımında), bir çevirici uygulamasının *#*# biçimindeki özel çevirici kodunu dinlemesi gerekir. #*# code kodunu girin ve kodu sendDialerSpecialCode
genel yöntemini kullanarak işleyin.
Alan bilgisi gereksinimi: Kanal 50
Kanal 50, taşıyıcıların alanla 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 kodu görüntüleyerek) görünür.
Android CellBroadcastService uygulaması, yayın Kanalı 50 bilgilerini almak için Ayarlar ve SysUI uygulamaları için 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
.
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. Başvuru 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 rengini ve 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 olarak:
Bindirilebilir konfigürasyonların listesi için
overlayable.xml
bakın.Örnek bir uygulama için
RROSampleTestApp
bakın.
Uygulamada UI dize çeviri kaynakları eksikse veya çeviriler beklentinizi 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 bu dizeleri overlayable.xml
göstermelidir. Kullanıcı arabirimi özelleştirmesi için daha fazla yapılandırmaya ihtiyacınız varsa, CellBroadcast destek grubuna ulaşın .
Veri taşıma
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) korumak ve taşımak için bir mekanizma olan eski bir CellBroadcast uygulamasını içerir. CellBroadcast modülünü kullanan Android uygulamaları, veri geçişi için yapılarına eski CellBroadcast uygulamasını dahil etmelidir. Uygulamanız özel bir CellBroadcast çözümü kullanıyorsa verileri korumak için bir CellBroadcastContentProvider APK tanımlamanız gerekir (bir sonraki sürümde eski hücre yayını APK'sını güvenle kaldırabilirsiniz).
CellBroadcast modülünü kullanmak üzere yükseltilen cihazlarda modül, iyi tanımlanmış cellbroadcast-legacy
yetkilisi aracılığıyla AOSP LegacyCellBroadcastApp veya OEM tanımlı CellBroadcastContentProvider APK'dan veri alır.
OEM tanımlı CellBroadcastContentProvider APK'sını kullanma
Bir CellBroadcastContentProvider APK'sı tanımlanırken APK'nin bu spesifikasyonlara uyması gerekir.
APK, cellbroadcast
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'dir.APK, OEM'in kendi gizli API şemalarını barındırmaya devam edebileceği OEM tarafından geliştirilir ve sahiplenir.
SharedPreferences
CellBroadcast modülüne geçirmek için CellBroadcastContentProvider APK'sı aşağıdaki parametrelerle ContentProvider.call
) yöntemini desteklemelidir:
- 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.
İleti geçmişini CellBroadcast modülüne taşımak için CellBroadcastContentProvider APK'sı aşağıdaki parametrelerle ContentProvider.query
yöntemini desteklemelidir:
- 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.
LegacyCellBroadcastContentProvider
için bir başvuru uygulaması için CellBroadcastContentProvider,
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
çalıştırabilirsiniz.
OEM, bir aygıt için CMAS gizli kodunu etkinleştirdiyse , o aygıt, aşağıdaki özelliklerle hata ayıklama modunu destekleyebilir.
Test uyarıları, bir açma/kapama düğmesiyle Diğer Uyarılar altında gruplanır.
Geçmiş, alınan ancak görüntülenmeyen, yinelenen mesajlar veya başka bir dildeki mesajlar gibi tüm mesajları içerir.
Mesajlar, seri numarası, mesaj kimliği ve son kullanma tarihi dahil tüm mevcut parametreleri görüntüler.
Hata ayıklama modunu etkinleştirmek için çeviricide *#*#CMAS#*#* tuşlayın.
İletişim
CellBroadcast modülü hakkında daha fazla ayrıntı veya soru için CellBroadcast destek grubuyla iletişime geçin.