2021. 03. 08

멍텅구리·2021년 3월 8일

AndroidStudio

목록 보기
4/7

1. 브로드캐스트 수신자

안드로이드에서 여러 앱에 메시지를 전달할때 쓰이는 안드로이드 컴퍼넌트 중 하나이다. 브로드캐스팅을 신청한 모든 앱에 메시지가 전달되므로 어떤 앱에 정확히 메시지를 보내고 싶은지 모를 때 이용할 수 있다.

대표적인 예로는 안드로이드 기계에 sms가 수신됐을 때 sms가 수신되었음을 브로드캐스팅을 통해 여러 앱에 메시지를 전달해 알려줄 수 있다.

브로드캐스팅 메시지를 받기위해서는 우선 브로드캐스트 수신자 클래스를 정의해야 한다. 브로드캐스트 수신자 클래스는 BroadcastReceiver 클래스를 상속해야 한다. 그리고 브로드캐스트 수신자를 매니페스트 파일에 등록해주어야 한다. 다음은 sms를 수신하는 브로드캐스트 수신자를 등록한 것이다.

<receiver
            android:name=".SmsReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
            </intent-filter>
</receiver>

receiver 태그에 수신자를 정의해주고 그 안에 intent-fliter에 받고자 하는 브로드캐스팅 메시지의 종류를 설정해준다.

브로드캐스트 수신자 클래스에서 메시지를 수신할 때마다 onReceiver() 메소드가 호출되고 따라서 위 메소드를 반드시 재정의 해주어야 한다. onReceiver의 intent 파라미터에는 메시지에 대한 정보가 들어있다.

public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras(); // 번들 = 부가데이터를 주고받는 객체
        SmsMessage[] messages = parseSmsMessage(bundle);
        '''

2. 위험권한과 접근권한

카메라나 sms 메시지등과 같이 위험도가 높은 데이터에 접근하기 위해서는 안드로이드에서는 위험권한이 필요하다.
대표적으로는 위치, 카메라, 마이크, 연락처, 전화, 문자, 사진, 센서 등에 접근하는 데에는 위험권한이 필요하다.

위험 권한을 부여하기 위해서는 매니페스트 파일에 설정하고자 하는 위험권한을 먼저 설정해준다. 다음은 SMS를 수신할 수 있는 위험권한인 RECEIVE_SMS에 대한 위험권한을 설정해주는 방법이다.

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

다음은 activity에서 위험권한에 대한 권한을 얻거나 위험권한에 대한 권한이 있는지를 체크하는 메소드들이다.

ActivityCompat.requestPermissions(activity, String[] permissions) // 권한요청
ContextCompat.checkSelfPermission(context, String[] permissions); 
//권한이 있는지 확인
public void onRequestPermissionsResult(int requestCode,
String[] permissions, int[] grantResults)  // 사용자가 권한을 수락,거절했는지 확인
profile
치열하게 연습하자

0개의 댓글