2012-10-06 3 views
0

패키지를 제거하면 이벤트를 캡처하고 싶습니다. 브로드 캐스트 리시버 서브 클래스 : 매니페스트 섹션BroadcastReceiver를 사용하여 PACKAGE_REMOVED 이벤트 캡처

public class CustomBroadcastReceiver extends BroadcastReceiver { 

    /** 
    * This method captures the event when a package has been removed 
    */ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     Helper.writeInLogFile("Hello from CustomBroadcastReceiver"); 
     if (intent != null) { 
      String action = intent.getAction();   
      if (action.equals(intent.ACTION_PACKAGE_REMOVED)) { 
       //Log the event capture in the log file ... 
       Helper.writeInLogFile("The package has been removed"); 
      } 
     } 
    } 
} 

: 나는 다음과 같은 사용

<receiver android:name="CustomBroadcastReceiver" > 
      <intent-filter> 
       <action android:name="android.intent.action.PACKAGE_REMOVED" > 
       </action> 
      </intent-filter> 
</receiver> 

을 ...하지만 CustomBroadcastReceiver 해고되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 감사합니다.

+0

'의도'는 결코 'null'이 아니지만 분명히 괜찮은 것 같습니다. 따라서이 테스트는 특히 유용하지 않습니다. – CommonsWare

+0

테스트를 위해 좋습니다. - 실제로 액션 테스트가 예외 (가끔 안드로이드 내부 메시징 시스템에 대한 내 무지로부터 자신을 보호)에 실패하지 않았는지 확인하고 싶었 기 때문에 방금했습니다. 이것은 파일에 로그인하는 것을 제외하고는 전체 코드를 가져 와서 여전히 CustomBroadcastReceiver를 실행하지 않는다고 말했습니다 ... –

답변

0

대답은 'hackbod'2/28/08에서 https://groups.google.com/forum/?fromgroups=#!topic/android-developers/aX5-fMbdPR8입니다. 원칙적으로 모든 이벤트 처리기의 경우 CustomBroadcastReceiver 인스턴스를 시스템에 등록해야합니다. 그건 내 코드에서 빠졌어요. 물론 등록 (위의 링크에있는 코드)은 응용 프로그램의 기본 활동 클래스에서 수행해야합니다. 참고로, 주 활동에서 의도 필터를 정의하면 우리는 그 목록에 언급하지 않을 수 있습니다 (그것은 깨지지 않지만 중복됩니다).

관련 문제