ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android/Java] 브로드캐스트 수신자(Broadcast Receiver)
    Android/Java 2021. 12. 15. 15:39
    반응형

    [모든 포스팅은 개인적 공부를 위해 작성된 글입니다]

     

    <수신자>
     - 앱 간 또는 구성 요소 간 메시지를 주고 받을 수 있도록 한 것

     - 화면이 없는 상태에서 Intent 안에 포함된 메시지 주고받을 때 사용

     

    <브로드캐스팅(Broadcasting)>

     - 메시지를 여러 객체(여러 앱 구성 요소)에 전달하는 것

     

    <글로벌 이벤트(Global Event)>

     - 단말 전체에 메시지가 전달되는 것

     

    <브로드캐스트 수신자(Broadcast Receiver)>

     - 브로드캐스딩 메시지 받고 싶은 경우 사용((ex)앱 A에서 앱 B로 메시지 전달)

     - 서비스와 마찬가지로 앱의 구성 요소이므로 Manifest 파일에 등록해야 시스템이 알 수 있고 화면도 없게 됨

     - Manifest가 아닌 소스 코드에서 registerReceiver() 메서드 사용해 시스템에 등록할 수 있는데, 이 경우 액티비티 안에서 브로드캐스트 메시지 전달받아 바로 다른 작업 수행하도록 할 수 있는 장점이 있음

     - 얻을 수 있는 이벤트

      - 배터리 부족, 네트워크 연결/끊김, SD카드 삽입/제거, SMS 수신, 카메라 버튼 눌림, 휴대폰의 날짜*시간 변동, 비행기모드 전환, 어플 설치/제거, 재부팅/종료 등등..

     

    *참고*

     - 오레오 이전 버전은 앱이 꺼져도 정상적으로 브로드캐스트 수행

     - 오래오 이상의 버전은 앱이 꺼지면 리소스 소모 등의 이유로 기능이 제한됨

     

    <브로드캐스트 등록 및 사용(예제는 SMS 메시지 수신)>

    [app -> New -> Other -> Broadcast Recevier]

    public class MyReceiver extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            throw new UnsupportedOperationException("Not yet implemented");
        }
    }

     - onReceive() 메서드는 원하는 브로드캐스트 메시지가 도착하면 자동으로 호출됨(예제에서는 SMS 메시지가 들어간 Intent 수신한 경우 onReceive() 메서드가 호출됨)

     - 원하는 메시지만 받으려면 Intent-filter 사용해 시스템에 등록하면 됨

      - Manifest에 등록된 receiver에 intent-filter 추가

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

      - android.provider.Telephony.SMS_RECEIVED는 SMS 메시지가 들어간 Intent 구분하기 위한 액션 정보

     

    ...계속 추가 예정

    반응형

    'Android > Java' 카테고리의 다른 글

    [Android/Java] 알림(Notification)  (0) 2021.12.19
    [Android/Java] 애플리케이션 기본 항목  (0) 2021.12.16
    [Android/Java] 메모  (0) 2021.12.15
    [Android/Java] 서비스  (0) 2021.12.14
    [Android/Java] 푸시 서비스  (0) 2021.12.11

    댓글

Designed by Tistory.