마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

오레오 BroadcastReceiver, 앱이 죽으면 리시버가 작동을 안하나네요.

0 추천

안녕하세요, 초보이고, 샘플 코드를 바탕으로 SMS Receiver app 구현 중인데요

manifest에서 

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

public class SMSReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
       ~~~~~~~~~~~
    }
}

로 잘 작동하는데요. 
오레오에서 앱이 중단되면 BroadcastReceiver가 작동을 안합니다. (실행되면 작동을 하고요)
찾아보니 오레오에서 암시적 브로드캐스트(매니페스트)는 지원이 안되고 명시적으로 사용해야된다고 되어 있는데 어떻게 해야되는지 힌트나 예제 코드 알려주시면 감사하겠습니다.

조언 부탁드리고요.
간혹 SMS를 다루게 되면 해킹한다고 생각하시는 경우가 있는데 그런목적은 절대 아닙니다.
감사합니다.

익명사용자 님이 2018년 9월 8일 질문
2018년 9월 8일 수정

1개의 답변

0 추천

Manifest에서 Broadcast Intent Filter를 넣지 말고,
액티비티나 서비스에서 동적으로 Broadcast Intent Filter를 넣으면 된다고 하네요.
저는 원래 동적으로 해왔기 때문에 문제가 없었는지도...

참조: https://stackoverflow.com/questions/50798985/broadcast-receiver-on-android-oreo

해결책은 아래처럼, 특정한 답변을 구하면 될 것 같네요.

https://stackoverflow.com/questions/49614203/registering-static-broadcast-receiver-in-oreo

키워드: android how to add broadcast receiver programmatically in oreo

상기질문에 sms 관련한 내용이면 sms를 추가해 넣으면, 답변이 뜹니다.

android how to add sms broadcast receiver programmatically in oreo

Will Kim (43,170 포인트) 님이 2018년 9월 10일 답변
...