안드로이드 개발 질문/답변
(글 수 45,052)
DB처럼 버전이 바뀌면 onUpdate 처럼 어플리케이션도 업데이트(결국 재설치)할 경우 호출되는 이벤트가 있나요????
없으면 만들어서 설정값 일부를 초기화 해주려고 합니다
2012.02.29 13:30:38
<action android:name="android.intent.action.PACKAGE_ADDED"/>
<action android:name="android.intent.action.PACKAGE_CHANGED"/>
<action android:name="android.intent.action.PACKAGE_REPLACED"/>
라는 액션이 있구요.
깔려있는 상태에서 다시 깔리면 PACKAGE_REPLACED가 호출됩니다.
다만, 모든앱에 의해 이벤트가 발생하므로 (다른 앱을 업데이트해도 뜹니다)
OnReceive 쪽에서
String packageName = intent.getData().getSchemeSpecificPart();
를 하면 해당이벤트가 발생한 package의 이름을 얻어올 수 있고,
string의 matches를 이용해 내앱에서 발생한 것인지 확인할 수 있습니다.
matches를 쓸 때 ".*블라블라블라.*" 이런식으로 하면 포함한 문자로도 검색 가능합니다.
2012.02.29 16:05:14
답변 감사드립니다
근데 제가 이해를 잘 못해서 그런데요
그러면 제가 앱을 업데이트하면서 일부 프리퍼런스 설정값을 바꾸려고 하거든요
( 초기 팝업창을 닫으면 1이 저장되는데 업데이트 이후에는 다시 띄우기 위해 이값으 0으루 바꾸려고 합니다 )
( 어플 업데이트시에는 프리퍼런스의 설정값이 초기화되지 않고 남아있으니까 해당 부분의 프리퍼런스만 초기화 하려고 합니다. )
그럼 해당 어플리케이션의 메인액티비티의 onReceive 에서 처리해주면 되는 것인가요??
그렇다면 저 액션의 패키지설치를 탐지하는건 A라는 어플에서 B라는 어플이 설치되는지를 확인할 수 있는거겠군요??



