안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
BroadcastReceiver를 사용하는 방법이
1. 클래스에 BroadcastReceiver를 상속받아서 사용하는 방법과
2. 클래스 내에서 BroadcastReceiver m = new BroadcastReceiver () 이런식으로 생성해서 사용하는 방법이 있더군요.
1번으로 하려면 리시버 등록을 manifast 파일에서 하고
2번으로 하려면 코드내에서 등록하고 해제.
이렇게 하는거 맞나요??
그리고 1번으로 하면 어플이 종료되었을때도 동작을 하는데
2번으로 하면 어플이 실행 중일때만 BroadcastReceiver 가 작동하는거 같은데요...
제가 생각하는게 맞는건가요?
그럼 2번으로 BroadcastReceiver 를 생성하고 manifast에서 리시버를 등록하는 방법은 안되는건가요?
제가 지금 sms를 받아서 동작을 하는 어플을 만들고 있거든요. 그래서 어플이 종료되어 있을때도 sms가 오면
반응을 해서 작업을 해야 하거든요... 무조건 1번 방식으로 해야하나요??
BroadcastReceiver를 사용하는 방법이
1. 클래스에 BroadcastReceiver를 상속받아서 사용하는 방법과
2. 클래스 내에서 BroadcastReceiver m = new BroadcastReceiver () 이런식으로 생성해서 사용하는 방법이 있더군요.
1번으로 하려면 리시버 등록을 manifast 파일에서 하고
2번으로 하려면 코드내에서 등록하고 해제.
이렇게 하는거 맞나요??
그리고 1번으로 하면 어플이 종료되었을때도 동작을 하는데
2번으로 하면 어플이 실행 중일때만 BroadcastReceiver 가 작동하는거 같은데요...
제가 생각하는게 맞는건가요?
그럼 2번으로 BroadcastReceiver 를 생성하고 manifast에서 리시버를 등록하는 방법은 안되는건가요?
제가 지금 sms를 받아서 동작을 하는 어플을 만들고 있거든요. 그래서 어플이 종료되어 있을때도 sms가 오면
반응을 해서 작업을 해야 하거든요... 무조건 1번 방식으로 해야하나요??
2011.03.10 02:17:04
manifest에 리시버 등록할 때 intent-filter 안 action 속성으로 name을 지정해주잖아요. 다른 어플등에서 intent로 sendBroadcast 할 때 앞의 action이 같은 곳에만 전달이 되거든요..
소스를 보지 않아서 모르겠지만.. 아마 sms같은경우 프레임워크단에서
new Intent.setAction("android.provider.Telephony.SMS_RECEIVED".sendBroadcast() 비스무리하게 코딩됬을거에요.. 여기서 지정된
android.provider.Telephony.SMS_RECEIVED와 같은 intent-filter action을 set한 액티비티나 서비스, 리시버 등이 data를 받을 수 있는 거죠..
클래스 내에서 리시버를 선언 생성해주는것은 당연히 액티비티나 어플리케이션이 종료되면 같이 사라지구요..
단순히 말하자면 클래스 내에서는 intent-filter를 등록할 방법이 없어서 manifest를 사용하셔야 한다고 생각하시면 쉬울 것같네요..



