- 구문
<receiver android:directBootAware=["true" | "false"] android:enabled=["true" | "false"] android:exported=["true" | "false"] android:icon="drawable resource" android:label="string resource" android:name="string" android:permission="string" android:process="string" > . . . </receiver>
- 포함된 요소
<application>
- 포함 가능한 요소
<intent-filter>
<meta-data>
- 설명
- broadcast receiver(
BroadcastReceiver
서브클래스)를 애플리케이션의 구성요소 중 하나로 선언합니다. broadcast receiver를 사용하면 애플리케이션의 다른 구성요소가 실행되고 있지 않을 때도 시스템이나 다른 애플리케이션에서 브로드캐스트팅하는 인텐트를 애플리케이션에서 수신할 수 있습니다.broadcast receiver를 시스템에 알리는 방법에는 두 가지가 있습니다. 한 가지 방법은 이 요소를 사용해 manifest 파일에 broadcast receiver를 선언하는 것입니다. 또 다른 방법은 코드에서 동적으로 broadcast receiver를 만든 다음
Context.registerReceiver()
메서드를 사용해 등록하는 것입니다. broadcast receiver를 동적으로 만드는 방법에 관한 자세한 내용은
BroadcastReceiver
클래스 설명을 참조하세요.경고: 앱에 설정하는 broadcast receiver 수를 제한합니다. broadcast receiver가 너무 많으면 앱 성능과 사용자 기기의 배터리 수명에 영향을 줄 수 있습니다. 백그라운드 작업 예약에
BroadcastReceiver
클래스 대신 사용할 수 있는 API에 관한 자세한 내용은 백그라운드 최적화를 참조하세요. - 속성
android:directBootAware
broadcast receiver가 직접 부팅을 인식하는지 여부입니다. 즉, 사용자가 기기를 잠금 해제하기 전에 실행할 수 있는지 여부입니다.
참고: 직접 부팅되는 동안 애플리케이션의 broadcast receiver는 기기 보호 저장소에 저장된 데이터에만 액세스할 수 있습니다.
기본값은
"false"
입니다.android:enabled
- 시스템에서 broadcast receiver를 인스턴스화할 수 있는지 여부입니다. broadcast receiver가 인스턴스화될 수 있으면 '
true
', 인스턴스화될 수 없으면 'false
'입니다. 기본값은 'true
'입니다.<application>
요소에는 broadcast receiver를 비롯하여 모든 애플리케이션 구성요소에 적용되는 자체enabled
속성이 있습니다. broadcast receiver를 사용하려면<application>
및<receiver>
속성이 모두 'true
'여야 합니다. 둘 중 하나가 'false
'면 broadcast receiver가 사용 중지되며 인스턴스화될 수 없습니다. android:exported
- broadcast receiver에서 애플리케이션 외부 소스로부터 메시지를 수신할 수 있는지 여부입니다. 수신할 수 있는 경우 '
true
', 수신할 수 없는 경우 'false
'입니다. 'false
'인 경우 broadcast receiver는 동일한 애플리케이션 또는 동일한 사용자 ID를 가진 애플리케이션의 구성요소에서 보낸 메시지만 수신할 수 있습니다.기본값은 broadcast receiver에 인텐트 필터가 포함되어 있는지 여부에 따라 다릅니다. 필터가 없으면 정확한 클래스 이름을 지정하는 인텐트 객체만 broadcast receiver를 호출할 수 있습니다. 즉, 다른 애플리케이션은 일반적으로 클래스 이름을 알지 못하므로 이는 receiver가 애플리케이션 내부용으로만 사용된다는 것을 의미합니다. 이 경우 기본값은 '
false
'입니다. 반면 필터가 하나 이상 있다는 것은 broadcast receiver가 시스템이나 다른 애플리케이션에서 브로드캐스팅하는 인텐트를 수신하려고 함을 의미합니다. 따라서 기본값은 'true
'입니다.이 속성이 broadcast receiver의 외부 노출을 제한하는 유일한 방법은 아닙니다. 권한을 사용해 메시지를 보낼 수 있는 외부 항목을 제한할 수도 있습니다(
permission
속성 참조). android:icon
- broadcast receiver를 나타내는 아이콘입니다. 이 속성은 이미지 정의를 포함하는 드로어블 리소스의 참조로 설정되어야 합니다.
설정되어 있지 않으면 애플리케이션 전체에 지정된 아이콘이 대신 사용됩니다(
<application>
요소의icon
속성 참조).broadcast receiver의 아이콘은 여기에 설정되었는지 또는
<application>
요소에 의해 설정되었는지 여부와 상관없이 모든 receiver 인텐트 필터의 기본 아이콘이기도 합니다(<intent-filter>
요소의icon
속성 참조). android:label
- broadcast receiver에 관한 사용자가 읽을 수 있는 라벨입니다. 이 속성이 설정되어 있지 않으면 애플리케이션 전체에 설정된 라벨이 대신 사용됩니다(
<application>
요소의label
속성 참조).broadcast receiver의 라벨은 여기에 설정되었는지 또는
<application>
요소에 의해 설정되었는지 여부와 상관없이 모든 receiver 인텐트 필터의 기본 라벨이기도 합니다(<intent-filter>
요소의label
속성 참조).라벨은 사용자 인터페이스의 다른 문자열처럼 현지화될 수 있도록 문자열 리소스의 참조로 설정되어야 합니다. 그러나 애플리케이션을 개발하는 동안 편의를 위해 원시 문자열로 설정할 수도 있습니다.
android:name
- broadcast receiver를 구현하는 클래스의 이름으로,
BroadcastReceiver
의 서브클래스입니다. 이 이름은 정규화된 클래스 이름(예: 'com.example.project.ReportReceiver
')이어야 하지만 이름의 첫 번째 문자가 마침표인 경우(예 '. ReportReceiver
')<manifest>
요소에 지정된 패키지 이름에 추가됩니다.애플리케이션을 게시한 후에는
android:exported="false"
를 설정하지 않은 경우 이 이름을 변경하면 안 됩니다.기본값은 없으며, 이름을 지정해야합니다.
android:permission
- broadcaster가 broadcast receiver에 메시지를 보내는 데 필요한 권한 이름입니다.
이 속성이 설정되어 있지 않으면
<application>
요소의permission
속성에서 설정한 권한이 broadcast receiver에 적용됩니다. 아무 속성도 설정되어 있지 않으면 receiver가 권한으로 보호되지 않습니다. android:process
- broadcast receiver가 실행되어야 하는 프로세스의 이름입니다.
일반적으로 애플리케이션의 모든 구성요소는 애플리케이션용으로 생성된 기본 프로세스에서 실행됩니다. 애플리케이션 패키지와 이름이 동일합니다.
<application>
요소의process
속성은 모든 구성 요소에 다른 기본값을 설정할 수 있습니다. 하지만 각 구성요소는 애플리케이션을 여러 프로세스에 분산할 수 있도록 자체process
속성으로 기본값을 재정의할 수 있습니다.이 속성에 지정된 이름이 콜론(':')으로 시작되면 필요에 따라 애플리케이션에만 공개되는 새 프로세스가 생성되고, 생성된 프로세스에서 broadcast receiver가 실행됩니다. 프로세스 이름이 소문자로 시작되는 경우 receiver는 그 이름의 전역 프로세스에서 실행됩니다(실행 권한이 있는 경우). 이를 통해 다른 애플리케이션의 구성요소가 프로세스를 공유하여 리소스 사용을 줄일 수 있습니다.
- 도입 시기
- API 레벨 1
Content and code samples on this page are subject to the licenses described in the Content License. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2019-12-27 UTC.