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.
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.
Aşağıdaki şekil CellBroadcast mesaj akışını göstermektedir.
Şekil 1. CellBroadcastReceiver mesaj akışı
Radyo arabirim katmanı (RIL),
InBoundSMSHandlerbir 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ına (
com.google.android.cellbroadcast ) dahildir. 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.google.android.cellbroadcastreceiver paket adıyla değiştirin.
<!-- Cell broacast receiver package name [DO NOT TRANSLATE] --> <string name="cell_broadcast_receiver_package"> com.google.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.google.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 .
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 bölge ile ilgili bilgileri yayınlaması için özel bir kanaldır (Güney Afrika'daki MTN hariç). Bu kanal için, yayın mesajları bir açılır 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_UPDATEDyayınını kaydedin ve bir RRO aracılığıyla
config_area_info_receiver_packagesalı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.google.android.cellbroadcastreceiver olarak değiştirin. Ek olarak:
Bindirilebilir konfigürasyonların listesi için
overlayable.xmlbakın.
Örnek bir uygulama için
RROSampleTestAppbakı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.
Bir CellBroadcastContentProvider APK'sı tanımlarken APK'nin bu spesifikasyonlara uyması gerekir.
APK, cellbroadcast
cellbroadcast-legacyyetkisine sahip bir
ContentProvidernesnesi aracılığıyla yalnızca veritabanının ve
SharedPreferencesiçeriğini gösteren 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.callyöntemi için
SharedPreferencesgelir.
İ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.queryyöntemi için (veritabanınızdan) verileri alır.
LegacyCellBroadcastContentProvider için bir başvuru uygulaması için
CellBroadcastContentProvider, bakın.
Test yapmak
Android Uyumluluk Testi Paketi (CTS), uygulamaya bağlı sistem API'lerinin işlevselliğini doğrular. CellBroadcast modülü
unit tests/testappsp dosyasını da ç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.
Temas
CellBroadcast modülü hakkında daha fazla ayrıntı veya soru için CellBroadcast destek grubuyla iletişime geçin.