CellBroadcast

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.

CellBroadcastReceiver mesaj akışı

1. şekil. CellBroadcastReceiver mesaj akışı

  1. Radyo arayüzü katmanı (RIL), InBoundSMSHandler öğesini CDMA/GSM CellBroadcast SMS hakkında bilgilendirir.

  2. Çerçeve, gelen mesajı ayrıştırmak ve işlemek için CellBroadcast SMS'i CBS modülüne yönlendirir.

  3. İleti işlendikten sonra CellBroadcastService, intent'i sistemin varsayılan CellBroadcastReceiver uygulamasına yönlendirir.

  4. 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.

CellBroadcastReceiver uygulama ayarları menüsü

Şekil 2. CellBroadcastReceiver uygulama ayarları menüsü

Acil durum uyarısı geçmişi

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 bir ContentProvider 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çin SharedPreferences 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.