안드로이드 스튜디오 :: Broadcast 에 권한 부여하기

Android/공통 2020.10.14 댓글 moonsu
728x90

안드로이드 스튜디오 :: Broadcast Receiver

안드로이드 스튜디오 :: Broadcast 전송하기

 

브로드캐스트에 특정 권한을 부여해 제한할 수 있다. 권한은 브로드캐스트 발신자, 수신자 모두 적용해 제한할 수 있다.

 

1. 권한을 사용해 전송하기

sendBroadcast(Intent, String) 또는 sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle) 를 호출할 때 권한 매개변수를 지정할 수 있다. 예를 들어 다음 코드는 메세지 발송 권한이 필요한 브로드캐스트를 전송한다.

더보기
sendBroadcast(new Intent("com.example.NOTIFY"),
              Manifest.permission.SEND_SMS);
더보기
sendBroadcast(Intent("com.example.NOTIFY"), Manifest.permission.SEND_SMS)

위와 같이 권한이 부여된 브로드캐스트를 전송하려면 발신 앱에서 권한을 요청해야 한다. (manifest 파일)

<uses-permission android:name="android.permission.SEND_SMS"/>

 

2. 권한을 사용해 수신하기

manifast 혹은 contextBroadcast Receiver 를 등록할 때 다음과 같이 권한을 함께 부여해야 한다. 먼저 manifest 에 선언된 수신자이다.

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

<receiver> 태그에 권한 (permission)을 부여한다. 그리고 아래는 컨텍스트에 등록된 수신자이다.

더보기
IntentFilter filter = new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED);
registerReceiver(receiver, filter, Manifest.permission.SEND_SMS, null );    
더보기
var filter = IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED)
registerReceiver(receiver, filter, Manifest.permission.SEND_SMS, null    

발신 앱과 마찬가지로 아래와 같이 권한을 요청해야 수신이 가능하다.

<uses-permission android:name="android.permission.SEND_SMS"/>

 

이렇게 권한 매개변수를 지정하면 해당 권한을 요청한 브로드캐스터만 인텐트를 전송할 수 있다.

728x90
반응형

댓글