1.

앱에서 브로드캐스트를 전송하는 방법을 세 가지 제공한다.

 

 

첫번째, sendOrderedBroadcast(Intent, String) 메서드

- 한 번에 하나의 수신자에 브로드캐스트를 전송한다.

- 각 수신자는 차례로 실행되기 때문에 결과를 다음 수신자로 전파하거나 브로드캐스트를 완전히 중단하여 브로드캐스트가 다른 수신자로 전달되지 않도록 할 수 있다.

- 수신자가 실행되는 순서는 일치하는 인텐트-필터의 android:priority 속성으로 제어할 수 있다.

- 우선순위가 동일한 수신자는 임의의 순서로 실행된다.

 

 

둘번째, sendBroadcast(Intent) 메서드

- 정의되지 않은 순서로 모든 수신자에 브로드캐스트를 전송한다.

- 이를 일반 브로드캐스트라고 한다.

- 일반 브로드캐스트는 상당히 효율적이지만 수신자가 다른 수신자의 결과를 읽거나 브로드캐스트로부터 수신한 데이터를 전파하거나 브로드캐스트를 중단할 수 없음을 의미한다.

 

 

셋번째, LocalBroadcastManager.sendBroadcast 메서드

- 발신자와 동일한 앱에 있는 수신자에 브로드캐스트를 전송한다.

- 앱 간에 브로드캐스트를 전송할 필요가 없다면 로컬 브로드캐스트를 사용한다.

- 구현이 훨씬 더 효율적이며(프로세스 간 통신이 필요 없음) 다른 앱이 브로드캐스트를 수신하거나 전송할 수 있는 측면과 관련된 보안 문제에 관해 걱정할 필요가 없다.

 

 

 


 

 

 

2. -사용법-

인텐트를 생성하고 sendBroadcast(Intent)를 호출함으로써 브로드캐스트를 전송하는 방법을 보여줍니다.

브로드캐스트 메시지는 Intent 객체에서 래핑됩니다.

인텐트의 작업 문자열은 앱의 자바 패키지 이름 구문을 제공하고 브로드캐스트 이벤트를 고유하게 식별해야 한다. 

putExtra(String, Bundle)를 사용하여 인텐트에 추가 정보를 첨부할 수 있습니다.

또한 인텐트에서 setPackage(String)를 호출하여 동일한 조직의 앱 세트로 브로드캐스트를 제한할 수도 있다.

 

 

 

 


 

 

 

3. -권한으로 브로드캐스트 제한-

3.1.

권한을 통해 특정 권한을 보유한 앱 세트로 브로드캐스트를 제한할 수 있습니다.

브로드캐스트의 발신자 또는 수신자에 제한사항을 적용할 수 있습니다.

 

 

 

3.2.권한을 사용하여 "전송"

sendBroadcast(Intent, String) 또는 

sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle)

호출할 때 권한 매개변수를 지정할 수 있습니다. 

ex) sendBroadcast(Intent, String) 사용한거

*브로드캐스트를 수신할려면(수신앱에서하는거)!!! 매니페스트에 권한 요청 해야됨!!!

 

 

 

 

3.3.권한을 사용하여 "수신"

<방법 2가지 있음>

첫번째, registerReceiver(BroadcastReceiver, IntentFilter, String, Handler)

두번째, manifest의 <receiver> 태그

 

broadcast receiver를 등록할 때( registerReceiver(BroadcastReceiver, IntentFilter, String, Handler)를 사용하거나 manifest의 <receiver> 태그를 통해 ) 권한 매개변수를 지정하면 manifest에 <uses-permission> 태그를 사용하여 권한을 요청한 브로드캐스터(및 위험하다면 나중에 권한을 부여받은 브로드캐스터)만 수신자에 인텐트를 전송할 수 있다.

 

ex)

예를 들어 아래와 같이 수신 앱에 manifest에 선언된 수신자가 있다고 가정합니다.

매니페스트.xml

<receiver android:name=".MyBroadcastReceiver"
              android:permission="android.permission.SEND_SMS">
        <intent-filter>
            <action android:name="android.intent.action.AIRPLANE_MODE"/>
        </intent-filter>
</receiver>

 

 

 

아래와 같이 발신 앱이 권한을 요청해야 수신자에 브로드캐스트를 전송할 수 있습니다.