Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

<receiver>

구문
<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