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

브로드캐스트리시버 관련

0 추천
-----manifest
<receiver android:name=".PackageReceiver"
        android:enabled="true">
        <intent-filter android:priority="100">
            <action android:name="android.intent.action.PACKAGE_ADDED"/>
            <action android:name="android.intent.action.PACKAGE_REPLACED"/>
            <data android:scheme="package"/>
        </intent-filter>  
</receiver>


-----BroadcastReceiver
public class PackageReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {

    Log.e("noti", "sucess");
    //서비스 실행
    Intent i = new Intent(context, NotificationService.class);
    context.startService(i);
}}

 

안녕하세요? 작업중에 곤란한 부분이 생겨 질문 드립니다..

작업 중인 패키지는 액티비티가 없구요.. 오로지 리소스만 사용하는 패키지 입니다.

문제는 이 패키지에서 notification 알람을 사용할 일이 생겼어요.

그래서 설치 혹은 재설치시 브로드캐스트리시버를 통하여 서비스를 실행시키고 그 서비스에서 알람을 출력 할려고 했지만,,, 문제가 특정 버전 이상 부턴 출력이 안되더라구요.. 하위버전에선 되던것 같은데;;

 

스택 오버 플로우에 질문 해보니 ..

http://stackoverflow.com/questions/22894512/broadcastreceiver-doesnt-work/

잘 알아 볼순 없지만..

 

두번째 답변에서

3.1 이상은 앱을 한번 실행 시켜 줘야 한다는것 같더라고요. 그래서 상위버전에선 실행이 안됐던것 같고요..

 

근데 첫번째 답변에서 보시면 액티비티 혹은 서비스로 리시버를 시작 시켜줘라 라는게 있는데..

액티비티 없이 리시버를 실행 시켜 줄수가 있나요?(서비스로..)

 

이 패키지는 리소스만 사용 하는 패키지라.. 액티비티를 넣을수가 없거든요..

설치시 혹은 재설치시

바로 서비스 or 리시버 작동 시키는방법 아시는분 답변좀 부탁드리겠습니다.

 

 

 

Ripple (810 포인트) 님이 2014년 4월 7일 질문
Ripple님이 2014년 4월 7일 수정

1개의 답변

+1 추천
링크하신 글에 잘 설명이 되어있네요.

3.1 부터는 사용자가 명시적으로 실행한 앱만 broadcast receiver가 동작하게 바뀌었습니다.

우회할 방법은 없습니다.

앱 동작구조를 바꾸던지 명시적으로 실행할 액티비티를 넣으셔야 합니다.
익명사용자 님이 2014년 4월 7일 답변
...