IT_Programming/Android_Java

[Android] 앱 설치, 삭제, 업데이트 시 서비스(Service) 실행하기

JJun ™ 2013. 11. 8. 15:56



 출처: http://ccdev.tistory.com/29




이번 시간에는 ~ 앱이 업데이트 되었을 때 ! 잠금화면 서비스를 재실행하는 방법에 대해서 알아보겠습니다.
이에 추가해서 앱이 설치되었을 때와 삭제되었을 때 Intent를 받는 방법을 알아보겠습니다.


public class PackageReceiver extends BroadcastReceiver{

@Override

public void onReceive(Context context, Intent intent) {

      String action = intent.getAction();

         

      if(action.equals(Intent.ACTION_PACKAGE_ADDED)){

            // 앱이 설치되었을 때

      } else if(action.equals(Intent.ACTION_PACKAGE_REMOVED)){

            // 앱이 삭제되었을 때

      } else if(action.equals(Intent.ACTION_PACKAGE_REPLACED)){

// 앱이 업데이트 되었을 때

Intent i = new Intent(context, ScreenService.class);

context.startService(i);

}

}

}


ACTION_PACKAGE_ADDED : 앱이 설치되었을 때

ACTION_PACKAGE_REMOVED : 앱이 삭제되었을 때

ACTION_PACKAGE_RELPLACED : 앱이 업데이트 되었을 때




이렇게 BroadcastReceiver를 등록하고 우리가 원하는 것은 앱이 업데이트 되었을 때 서비스를 실행하는 것이므로
ACTION_PACKAGE_REPLACED 가 broadcast 되었을 때 서비스를 실행해주면 되겠숩니다~
그 다음엔 Manifest.xml에 다음과 같이 등록해줘야겠죠 ㅋ


<receiver android:name=".PackageReceiver">

<intent-filter>

<action android:name="android.intent.action.PACKAGE_ADDED"/>

<action android:name="android.intent.action.PACKAGE_REMOVED"/>

<action android:name="android.intent.action.PACKAGE_REPLACED"/>

<data android:scheme="package"/>

</intent-filter>

</receiver>


<data android:scheme="package"/>  이부분이 꼭 필요합니다 ! 네 요렇게 등록까지 해주고 ㅋ 쩌~~번에 만든 ScreenService 클래스의 onCreate()와 onDestroy()에 다음과 같이 등록해줍니다ㅋ


private PackageReceiver pReceiver;


@Override

public void onCreate(){

// 이전 코드를 추가해주고 아래를 추가


pReceiver = new PackageReceiver(this);

IntentFilter pFilter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);

pFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);

pFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);

pFilter.addDataScheme("package");

registerReceiver(pReceiver, pFilter);

}


@Override

public void onDestroy(){

// 이전 코드를 추가해주고 아래를 추가

if(pReceiver != null)

unregisterReceiver(pReceiver);

}


요렇게 추가해주면 ~ 깔끔하게 앱이 업데이트 될 때 마다 다시 잠금화면 서비스를 실행할 수 있답니다!
참 쉽죠 ㅋ 추가
적으로 앱이 설치되거나 삭제되었을 때도 PackageReceiver에서 처리해주면 된답니다.