2014-02-24 2 views
4

UnInstalling 애플리케이션에서 시간에 내 애플리케이션에서 생성 된 정크를 정리하고 싶습니다.android에서 애플리케이션을 제거 할 때 브로드 캐스트 리시버를 호출하십시오.

매니페스트 파일을 사용 : -

추가 매니페스트 파일에 : 수신기 만든

<receiver android:name="com.netdoers.com.ui.CleanReceiver" > 
     <intent-filter> 
      <action android:name="android.intent.action.PACKAGE_REMOVED" > 
      </action> 
      <data android:scheme="package"/> 
     </intent-filter> 
    </receiver> 

자바 코드에서 BroadCast Event

public class CleanReceiver extends BroadcastReceiver 
{ 
    public void onReceive(Context context, Intent intent) { 
    CustomToast.showToastMessage(context, "Uninstalling Application"); 
    Log.e("Uninstall", "CleanReceiver Called"); 
    } 
} 

을 잡으려고 : -

,294,

하지만 응용 프로그램을 제거 할 때 수신기가 호출 된 적이 없습니다.

Java와 Manifest는 모두 응용 프로그램 제거시 이벤트 수신자를 호출하지 않습니다. 응용 프로그램을 제거 할 때 브로드 캐스트 이벤트를 잡는 방법은 무엇입니까?

+0

@nKn : 그 해결책을 시도했지만 나에게 도움이되지 못했습니다 :/ –

+0

@nKn : 이러한 Action.PACKAGE_REMOVED는 시스템 기반 방송이므로 y는 호출되지 않았거나 무엇입니까? –

+2

이것은 중복 된 것처럼 보이지 않습니다. 다른 질문은 내 응용 프로그램과 관련이 없습니다. –

답변

2

제거 된 다른 패키지에 대한 브로드 캐스트를 얻을 수 있지만 자신의 패키지에는 사용할 수 없습니다.

이유 일

당신이 당신의 자신의 응용 프로그램에 제거 수신기를 등록하고 응용 프로그램이 제거 될 때 응용 프로그램이 제거되기 전에, 등록 된 브로드 캐스트 리시버가 제거되었습니다 그래서 자신의 제거 이벤트가 없기 때문에 그 BroadcastReceiver에 의해 수신 될 수 있습니다.

브로드 캐스트가 등록되었다고 (SMS 수신자라고 말하면서) 앱이 제거 될 예정이라는 시나리오를 생각해보십시오. 이제 SMS가 브로드 캐스트를 감지하지만 브로드 캐스트의 응용 프로그램 (제거한 프로그램)이 제거되었습니다. 시스템에 불일치가 생길 수 있습니다. 그래서 그것이 일어나는 이유가 될 수 있습니다.

+0

이런 종류의 시나리오를 방지하는 방법은 무엇입니까? 나는 길 때문에 이걸 붙잡 았어. Manifest 파일을 사용하여 브로드 캐스트를 등록하면 실제 응용 프로그램이 제거되기 전에 제거되는 방식은 어떻게됩니까? –

+0

브로드 캐스트가 등록되었다고 (SMS 수신자라고 말하면서) 앱이 제거 될 예정이라고 생각하는 시나리오를 생각해보십시오. 이제는 SMS가 브로드 캐스트를 감지하지만 브로드 캐스트의 응용 프로그램이 제거되었습니다. 시스템의 불일치 때문일 수 있습니다. – cafebabe1991

+0

그런 시나리오를 피하는 방법은 무엇입니까? 시스템 보호 방송으로 응용 프로그램을 제거 할 때 이벤트를 브로드 캐스트 할 수 있습니까? –