우찬쓰 개발블로그

안드로이드 앱 업데이트시 서비스 자동 실행 하는법 본문

안드로이드/안드로이드 개발

안드로이드 앱 업데이트시 서비스 자동 실행 하는법

이우찬 2019. 5. 2. 11:58
반응형

안드로이드 앱을 업데이트하면 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).

 

반응형
Comments