출처: 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에서 처리해주면 된답니다.
'IT_Programming > Android_Java' 카테고리의 다른 글
Android proguard Javascript Interface problem (0) | 2013.12.16 |
---|---|
[펌] Storage Access Framework - 스토리지 액세스 프레임웍을 통해 파일 마스터가 되자! (0) | 2013.12.13 |
[펌] Android AsyncTaskLoader에 대하여 (0) | 2013.11.04 |
TaskKiller에 죽지 않는 서비스(Service) 만들기 (0) | 2013.10.26 |
Activity 생성시에 사용되는 Intent Flag 정리 (0) | 2013.10.18 |