우찬쓰 개발블로그
안드로이드 앱 업데이트시 서비스 자동 실행 하는법 본문
안드로이드 앱을 업데이트하면 foreground service가 있는 앱일 경우에는 업데이트 후 앱을 실행시키지 않아도 서비스를 바로 실행시켜줘야 하는 경우가 있다.
이 경우, BroadcastReceiver를 만들어서 해당 이벤트를 받아서 서비스를 실행시키도록 처리하면 된다.
일단 manifest에 다음과 같이 코드가 들어가야한다.
<receiver
android:name=".TestBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
</intent-filter>
</receiver>
그다음, 브로드캐스트를 상속받아 이벤트를 처리할 클래스를 만든다.
class TestBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (intent.action.equals(Intent.ACTION_MY_PACKAGE_REPLACED, true)) {
//이벤트를 받을시 처리할 로직
}
}
}
이렇게하면 내 앱이 업데이트 되었을때에 대한 처리를 할 수 있다.
이와관련하여 추가정보로써, 예전에는 다른앱에 대한 업데이트 이벤트도 받을 수 있었다.
하지만 이것은 targetSDK 26이 넘어가면서, 구글이 못하도록 막았다.
https://developer.android.com/guide/components/broadcasts
Manifest-declared receivers Note: If your app targets API level 26 or higher, you cannot use the manifest to declare a receiver for implicit broadcasts (broadcasts that do not target your app specifically), except for a few implicit broadcasts that are exempted from that restriction. In most cases, you can use scheduled jobs instead. |
오레오 버전도 마찬가지다.
https://developer.android.com/about/versions/oreo/android-8.0-changes
Apps cannot use their manifests to register for most implicit broadcasts (that is, broadcasts that are not targeted specifically at the app). |
'안드로이드 > 안드로이드 개발' 카테고리의 다른 글
안드로이드 개발 완료전 체크사항 정리 (0) | 2019.05.03 |
---|---|
안드로이드 툴바 left padding 제거 (0) | 2019.05.02 |
activity animation 효과 넣기 (0) | 2019.04.21 |
안드로이드 status bar 투명 만들기 (0) | 2019.04.21 |
안드로이드 오레오 이상 푸시 알림 진동 끄는 법 (Android Notification vibrate disable) (0) | 2019.04.21 |