셀 브로드 캐스트

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

CellBroadcast 모듈은 OEM의 반복적인 노력을 줄여주고(결과적으로 Android 에코시스템 전반에 걸쳐 단편화를 줄이고 최종 사용자에게 일관된 동작을 제공함) CellBroadcast 관련 요구 사항에 대한 통신 사업자 테스트 및 인증을 간소화하는 데 도움이 됩니다(OEM에서 코드를 수정할 수 없기 때문). ). 이 모듈은 업데이트 가능합니다. 즉, 정상적인 Android 릴리스 주기 이외의 기능에 대한 업데이트를 받을 수 있습니다.

패키지 형식

CellBroadcast 모듈은 다음과 같은 서비스와 앱으로 구성되어 있습니다.

  • CellBroadcastService 서비스는 CellBroadcast SMS 디코딩, WEA(Wireless Emergency Alert) 3.0용 지오펜싱, 메시지 중복 검사 및 앱에 메시지 브로드캐스트를 지원합니다. 정의된 영역에서 동시에 여러 휴대폰 사용자에게 메시지를 전달하도록 설계된 일대다 지역 타겟팅 및 지오펜싱 메시징 서비스입니다. 이 서비스는 ETSI GSM 위원회인 3GPP 에 의해 정의되며 통신 표준의 일부입니다.

  • CellBroadcastReceiver 앱은 비상 및 비긴급 경보(예: 황색 및 대통령 경보)를 처리하고 이동통신사 및 지역 규정에 따라 최종 사용자에게 정보를 제공하는 기본 시스템 앱입니다.

CellBroadcast 메시지 흐름

다음 그림은 CellBroadcast 메시지 흐름을 보여줍니다.

CellBroadcastReceiver 메시지 흐름

그림 1. CellBroadcastReceiver 메시지 흐름

  1. 무선 인터페이스 계층(RIL)은 CDMA/GSM CellBroadcast SMS에 대해 InBoundSMSHandler 에 알립니다.

  2. 프레임워크는 CellBroadcast SMS를 CBS 모듈로 전달하여 수신 메시지를 구문 분석하고 처리합니다.

  3. 메시지가 처리된 후 CellBroadcastService는 의도를 시스템 기본 CellBroadcastReceiver 앱으로 전달합니다.

  4. CellBroadcastReceiver 앱은 사용자에게 메시지를 표시합니다.

모듈 형식

CellBroadcastService 및 CellBroadcastReceiver 앱은 Android 11 이상을 실행하는 기기에서 사용할 수 있는 단일 APEX 파일( com.android.cellbroadcast )에 포함되어 있습니다. 이 모듈은 package/app/CellBroadcastReceiver 에 코드를 포함하고 기존 프레임워크 클래스를 packages/modules/CellBroadcastService 로 마이그레이션합니다.

모듈 종속성

CellBroadcast 모듈은 안정적인 @SystemApi ( @hide API 없음)만 사용하여 프레임워크와 상호 작용하며 다음 정적 라이브러리에 종속됩니다.

  • Androidx.legacy_legacy-support-v13
  • Androidx.recyclerview_recyclerview
  • Androidx.preference_preference
  • androidx.legacy_legacy-preference-v14
  • androidx.appcompat_appcompat

런타임 리소스 오버레이(RRO) 를 사용하여 구성을 사용자 지정할 수 있습니다.

권한 구성

CellBroadcast 모듈은 플랫폼 서명 대신 Google 서명으로 서명됩니다. 즉, 모듈은 서명 권한에 액세스할 수 없습니다. 대신 Android 11은 CellBroadcast 모듈 내에 새로운 서명 권한 com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY 를 정의합니다. 모듈의 패키지만 동일한 키로 서명된 권한을 얻을 수 있습니다. 이 권한은 CellBroadcastReceiver 앱이 CellBroadcastService 내부의 데이터베이스에 대한 전체 액세스 권한을 갖도록 허용합니다.

플랫폼은 긴급 경보 기록에 액세스하기 위해 기본 시스템 SMS 앱에 android.permission.READ_CELL_BROADCASTS 런타임 권한을 부여합니다.

CellBroadcast 모듈 통합

이 섹션에서는 CellBroadcast 모듈을 통합하는 방법을 설명합니다.

설정과 통합

설정 앱에서 CellBroadcast 설정을 통합할 위치를 결정할 수 있습니다(최종 사용자는 설정 > 앱 및 알림 > 고급 > 긴급 경보 에서 CellBroadcast 설정 페이지에 액세스). 설정 앱에서 CellBroadcastReceiver 앱을 실행하려면 패키지 이름 com.android.cellbroadcastreceiver 로 다음 설정 구성을 변경하십시오.

<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>

메시징 앱과 통합

앱 링크를 메시징 앱에 통합하여 CellBroadcast 메시지 기록을 열 수 있습니다. Android 메시징 앱에서 이 기능은 설정 > 고급 > 긴급 경보 에 통합되었습니다. 자체 메시징 앱에 링크를 통합하려면 메시징 앱에서 경로를 정의하고 CellBroadcast 모듈의 구성요소 이름을 com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity 로 구성하십시오.

SMS 받은 편지함과 통합

런타임 리소스 오버레이를 사용하여 다음 구성을 재정의하여 기본 메시징 앱에서 CellBroadcast 메시지 표시를 활성화할 수 있습니다.

<item type="bool" name="enable_write_alerts_to_sms_inbox" />

권한 부여는 CellBroadcast 모듈의 범위를 벗어나므로 End-to-end 지원을 제공하려면 CellBroadcast 모듈에 AppOpsManager.OP_WRITE_SMS 권한을 부여해야 합니다. AOSP 참조 구현은 SmsApplication.java 패치 를 참조하십시오.

CellBroadcastReceiver 앱 실행

CellBroadcastReceiver 앱에는 다음과 같은 시작 지점이 있습니다.

  • 설정 앱 메뉴.

  • CellBroadcast 메시지 기록에 연결되는 메시지 앱과 같은 앱(타사 앱 포함).

  • (선택 사항) OEM에서 추가한 Android 홈 화면의 실행 아이콘입니다. 자세한 내용 은 시작 아이콘 추가 를 참조하십시오.

CellBroadcastReceiver 앱 설정

다음 스크린샷은 CellBroadcastReceiver 앱 설정 메뉴를 보여줍니다.

CellBroadcastReceiver 앱 설정 메뉴

그림 2. CellBroadcastReceiver 앱 설정 메뉴

긴급 경보 기록

그림 3. 긴급 경보 이력 화면

실행 아이콘 추가

앱 시작 관리자와 자체 실행 아이콘을 통해 CellBroadcast 메시지 기록에 액세스할 수 있습니다.

  • 앱 시작 관리자에서 메시지 기록에 액세스하려면 RRO를 사용하여 다음 구성을 재정의합니다.

    <item type="bool" name="show_message_history_in_launcher" />
    
  • AOSP 기본 아이콘을 재정의하려면 RRO를 사용하여 다음 구성을 재정의합니다.

    <!-- Customize launcher icon for cellbroadcast history -->
    <item type="mipmap" name="ic_launcher_cell_broadcast" />
    

CMAS 비밀 코드 활성화

CMAS 비밀 코드 *#*#CMAS#*#* (다이얼 패드의 *#*#2627#*#* )를 활성화하려면 다이얼러 앱이 *#*# 형식의 특수 다이얼러 코드를 수신해야 합니다. code #*#* 및 공용 메서드 sendDialerSpecialCode 를 사용하여 코드를 처리합니다.

지역 정보 요구 사항: 채널 50

채널 50은 캐리어가 지역 관련 정보를 방송하기 위한 특수 채널입니다(남아프리카의 MTN 제외). 이 채널의 경우 브로드캐스트 메시지로 인해 팝업 대화 상자나 알림이 표시되지 않습니다. 대신 브로드캐스트 메시지가 설정 메뉴의 SIM 상태 또는 상태 표시줄(예: 우편번호 표시)에 나타납니다.

Android CellBroadcastService 구현은 브로드캐스트 채널 50 정보를 가져오기 위해 설정 및 SysUI 앱에 대한 셀 브로드캐스트 서비스에서 다음 API에 대한 지원을 제공합니다. 이를 구현하려면 다음을 수행하십시오.

  • 브로드캐스트 android.telephony.action.AREA_INFO_UPDATED 를 등록하고 RRO를 통해 수신기 패키지 이름 config_area_info_receiver_packages 를 재정의합니다.

  • CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE 에 바인딩합니다.

설정 및 SysUI 앱은 CellBroadcast 모듈의 범위 밖에 있으므로 종단 간 지원을 제공하려면 SystemUI 또는 설정 앱에서 변경 사항을 구현해야 합니다. 참조 구현은 CellBroadcastService 설정 앱 을 참조하십시오.

커스터마이징

CellBroadcast 모듈의 소스 코드를 직접 수정할 수는 없지만 런타임 리소스 오버레이(RRO) 를 사용하여 매개변수 를 활성화(또는 비활성화)할 수 있습니다(예: 대화 상자에서 알림 및 차원의 색상을 사용자 지정할 수 있음). CellBroadcast 모듈에 사용된 매개변수의 기본값을 재정의하려면 대상 패키지 이름을 com.android.cellbroadcastreceiver 로 변경합니다. 게다가:

구현에 UI 문자열 번역 리소스가 누락되었거나 번역이 예상과 일치하지 않는 경우 RRO를 사용하여 번역 리소스를 재정의하거나 Google 번역 팀과 협력하여 문자열 번역을 CellBroadcast 모듈로 업스트림할 수 있습니다. 번역 리소스를 재정의하는 경우 Google은 재정의를 허용하도록 해당 문자열을 overlayable.xml 에 노출해야 합니다. UI 사용자 정의를 위해 추가 구성이 필요한 경우 CellBroadcast 지원 그룹 에 문의하십시오.

데이터 마이그레이션

Android 11에는 CellBroadcast 모듈로 업그레이드하는 기기의 앱 데이터(사용자 설정 및 긴급 경보 기록 포함)를 보존하고 마이그레이션하는 메커니즘인 레거시 CellBroadcast 앱이 포함되어 있습니다. CellBroadcast 모듈을 사용하는 Android 구현은 데이터 마이그레이션을 위한 빌드에 레거시 CellBroadcast 앱을 포함해야 합니다. 구현에서 사용자 지정 CellBroadcast 솔루션을 사용하는 경우 데이터를 보존하기 위해 CellBroadcastContentProvider APK를 정의해야 합니다(이후 릴리스에서 레거시 셀 브로드캐스트 APK를 안전하게 제거할 수 있음).

CellBroadcast 모듈을 사용하도록 업그레이드된 기기에서 모듈은 잘 정의된 cellbroadcast-legacy 기관을 통해 AOSP LegacyCellBroadcastApp 또는 OEM 정의 CellBroadcastContentProvider APK에서 데이터를 가져옵니다.

OEM 정의 CellBroadcastContentProvider APK 사용

CellBroadcastContentProvider APK를 정의할 때 APK는 다음 사양을 따라야 합니다.

  • APK는 cellbroadcast-legacy 권한이 있는 ContentProvider 개체를 통해 데이터베이스 및 SharedPreferences 의 콘텐츠만 표시하는 헤드리스 APK이며 타사 앱에서는 액세스할 수 없습니다.

  • APK는 OEM이 개발하고 소유하며, 여기서 OEM은 숨겨진 API 스키마를 계속 호스팅할 수 있습니다.

SharedPreferences 를 CellBroadcast 모듈로 마이그레이션하려면 CellBroadcastContentProvider APK가 다음 매개변수와 함께 ContentProvider.call ) 메서드를 지원해야 합니다.

  • 권한: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI
  • 방법: @SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
  • 인수: @SystemAPI CellBroadcast.Preference

    이것은 CellBroadcast 모듈에 대해 지원되는 공유 기본 설정 키 목록입니다. 데이터는 ContentProvider.call 메서드에 대한 SharedPreferences 에서 가져옵니다.

메시지 기록을 CellBroadcast 모듈로 마이그레이션하려면 CellBroadcastContentProvider APK가 다음 매개변수와 함께 ContentProvider.query 메서드를 지원해야 합니다.

  • 권한: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI . 쿼리 열에는 CellBroadcast 모듈에 대해 지원되는 메시지 속성이 나열됩니다. ContentProvider.query 메서드에 대한 데이터(데이터베이스에서)를 가져옵니다.

LegacyCellBroadcastContentProvider 에 대한 참조 구현은 CellBroadcastContentProvider, 참조하십시오.

테스트

Android CTS(호환성 테스트 모음)는 앱 종속 시스템 API의 기능을 확인합니다. CellBroadcast 모듈 unit tests/testappsp 를 실행할 수도 있습니다.

OEM이 장치에 대해 CMAS 비밀 코드를 활성화한 경우 해당 장치는 다음 기능으로 디버그 모드를 지원할 수 있습니다.

  • 테스트 경고는 켜짐/꺼짐 토글을 사용하여 기타 경고 아래에 그룹화됩니다.

  • 기록에는 중복 메시지 또는 다른 언어로 된 메시지와 같이 수신되었지만 표시되지 않은 모든 메시지가 포함됩니다.

  • 메시지에는 일련 번호, 메시지 ID 및 만료 날짜를 포함하여 사용 가능한 모든 매개변수가 표시됩니다.

디버그 모드를 활성화하려면 다이얼러에서 *#*#CMAS#*#* 를 누르십시오.

연락하다

CellBroadcast 모듈에 대한 자세한 내용이나 질문은 CellBroadcast 지원 그룹 에 문의하십시오.