CellBroadcast 모듈은 OEM의 반복적인 작업을 줄이며(이를 통해 Android 생태계에서 파편화가 감소하고 최종 사용자에게 일관된 동작이 제공됨) CarrierBroadcast 관련 요구사항에 대한 이동통신사 테스트 및 인증을 간소화하는 데 도움이 됩니다.(OEM이 코드를 수정할 수 없기 때문). 이 모듈은 업데이트할 수 있습니다. 즉, 일반적인 Android 출시 주기 외에 기능 업데이트를 받을 수 있습니다.
패키지 형식
CellBroadcast 모듈은 다음 서비스와 앱으로 구성됩니다.
CellBroadcastService 서비스는 CellBroadcast SMS 디코딩, WEA(무선 긴급 경보) 3.0의 지오펜싱, 메시지 중복 확인, 앱에 메시지 브로드캐스팅을 지원합니다. 이 서비스는 정의된 지역에 있는 여러 휴대전화 사용자에게 동시에 메시지를 전송하도록 설계된 일대다 지역 타겟팅 및 지오펜싱 메시지 서비스입니다. 서비스는 ETSI GSM 위원회, 3GPP에서 정의하며 전자 통신 표준의 일부입니다.
CellBroadcastReceiver 앱은 긴급 및 일반 알림(예: 황색 및 대통령령 경보)을 처리하고 이동통신사 및 지역 규정에 따라 최종 사용자에게 정보를 제공하는 기본 시스템 앱입니다.
CellBroadcast 메시지 흐름
다음 그림은 CellBroadcast 메시지 흐름을 보여 줍니다.
그림 1. CellBroadcastReceiver 메시지 흐름
RIL(무선 인터페이스 레이어)은 CDMA/GSM CellBroadcast SMS에 관해
InBoundSMSHandler
에 알립니다.프레임워크는 CellBroadcast SMS를 CBS 모듈에 전달하여 받은 메시지를 파싱하고 처리합니다.
메시지가 처리되면 CellBroadcastService는 인텐트를 시스템 기본 CellBroadcastReceiver 앱에 전달합니다.
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 모듈의 범위를 벗어나므로 엔드 투 엔드 지원을 제공하려면 CellBroadcast 모듈에 AppOpsManager.OP_WRITE_SMS
권한을 부여해야 합니다. AOSP 참조 구현은 이 SmsApplication.java
패치를 참조하세요.
CellBroadcastReceiver 앱 시작
CellBroadcastReceiver 앱에는 다음과 같은 시작 지점이 있습니다.
설정 앱 메뉴.
CellBroadcast 메시지 기록에 연결되는 메시지 앱과 같은 앱(서드 파티 앱 포함).
(선택사항) OEM이 추가한 Android 홈 화면의 시작 아이콘. 자세한 내용은 시작 아이콘 추가를 참고하세요.
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 구현은 설정 앱 및 SysUI 앱이 브로드캐스트 채널 50 정보를 가져오도록 셀 브로드캐스트 서비스에서 다음 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
로 변경합니다. 추가 정보:
오버레이 가능한 구성 목록은
overlayable.xml
을 참고하세요.구현 예는 AOSP의
RROSampleTestApp
을 참고하세요.
구현에 UI 문자열의 번역 리소스가 없거나 번역이 예상과 다른 경우 RRO를 사용하여 번역 리소스를 재정의하거나 Google 번역팀과 협업하여 번역 문자열을 CellBroadcast 모듈로 업스트림할 수 있습니다. 번역 리소스를 재정의한다면 Google에서는 재정의를 허용하기 위해 overlayable.xml
에 이러한 문자열을 노출해야 합니다. UI 맞춤설정을 위해 더 많은 구성이 필요하다면 CellBroadcast 지원 그룹에 문의하세요.
데이터 이전
Android 11에는 CellBroadcast 모듈로 업그레이드하는 기기의 앱 데이터 (사용자 설정 및 긴급 알림 기록 포함)를 보존하고 이전하는 메커니즘인 레거시 CellBroadcast 앱이 포함됩니다. CellBroadcast 모듈을 사용하는 Android 구현의 데이터 이전용 빌드에는 레거시 CellBroadcast 앱이 포함되어야 합니다. 구현에서 맞춤 CellBroadcast 솔루션을 사용하는 경우 데이터를 보존하기 위해 CellBroadcastContentProvider APK를 정의해야 합니다(후속 출시에서는 레거시 셀 브로드캐스트 APK를 안전하게 제거할 수 있음).
CellBroadcast 모듈을 사용하도록 업그레이드된 기기에서 모듈은 AOSP의 LegacyCellBroadcastApp에서 또는 명확히 정의된 cellbroadcast-legacy
권한을 통해 OEM 정의 CellBroadcastContentProvider APK에서 데이터를 가져옵니다.
OEM 정의 CellBroadcastContentProvider APK 사용
CellBroadcastContentProvider APK를 정의할 때 APK는 다음 사양을 따라야 합니다.
APK는
cellbroadcast-legacy
권한을 가진ContentProvider
객체를 통해SharedPreferences
및 데이터베이스의 콘텐츠만 표시하는 헤드리스 APK로, 서드 파티 앱에서는 이 APK에 액세스할 수 없습니다.APK는 OEM이 개발 및 소유하며 OEM이 APK에서 숨겨진 API 스키마를 계속 호스팅할 수 있습니다.
SharedPreferences
를 CellBroadcast 모듈로 이전하려면 CellBroadcastContentProvider APK는 다음 매개변수를 사용하여 ContentProvider.call
메서드를 지원해야 합니다.
- 권한:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
- 메서드:
@SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
Arg:
@SystemAPI CellBroadcast.Preference
CellBroadcast 모듈에 지원되는 공유 환경설정 키 목록입니다. 데이터는
ContentProvider.call
메서드의SharedPreferences
에서 가져옵니다.
메시지 기록을 CellBroadcast 모듈로 이전하려면 CellBroadcastContentProvider APK는 다음 매개변수를 사용하여 ContentProvider.query
메서드를 지원해야 합니다.
- 권한:
@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
. 쿼리 열은 CellBroadcast 모듈에 지원되는 메시지 속성을 나열합니다. 데이터베이스에서ContentProvider.query
메서드의 데이터를 가져옵니다.
CellBroadcastContentProvider,
의 참조 구현은 LegacyCellBroadcastContentProvider
를 참조하세요.
테스트
Android CTS(호환성 테스트 모음)는 앱 종속 시스템 API의 기능을 확인합니다. CellBroadcast 모듈 unit tests/testappsp
를 실행할 수도 있습니다.
OEM이 기기에서 CMAS 보안 비밀 코드를 사용 설정한 경우 이 기기는 다음 기능을 사용하여 디버그 모드를 지원할 수 있습니다.
테스트 알림은 켜기/끄기 전환 버튼이 있는 기타 알림 아래에 그룹화됩니다.
기록에는 중복 메시지 또는 다른 언어의 메시지와 같이 수신했지만 표시되지 않은 모든 메시지가 포함됩니다.
메시지에는 일련번호, 메시지 ID, 만료일 등 사용 가능한 모든 매개변수가 표시됩니다.
디버그 모드를 사용 설정하려면 다이얼러에서 *#*#CMAS#*#*를 누릅니다.
문의
CellBroadcast 모듈에 관한 자세한 내용 또는 질문은 CellBroadcast 지원 그룹에 문의하세요.