0

현재 응용 프로그램 업그레이드 수신자가 여러 번 호출되는 응용 프로그램에서 문제가 발생합니다. 다음은 매니페스트 코드 :수신기 트리거를 여러 번 업그레이드하십시오.

<receiver android:name=".receiver.UpgradeReceiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.PACKAGE_REPLACED" /> 
       <data android:scheme="package" android:path="com.example" /> 
      </intent-filter> 
     </receiver> 

UpgradeReceiver.java

public Context context; 
private static final String TAG = "UpgradeReceiver"; 

@Override 
public void onReceive(Context context, Intent intent) { 
    this.context = context; 
    if (null == intent) { 
     return; 
    } 

    String action = intent.getAction(); 
    Log.i(TAG, "Upgrade_Intent_Package[" + intent.getPackage() + "]"); 
    Bundle bundle = intent.getExtras(); 
    StringBuilder str = new StringBuilder(); 
    if (bundle != null) { 
     Set<String> keys = bundle.keySet(); 
     Iterator<String> it = keys.iterator(); 
     while (it.hasNext()) { 
      String key = it.next(); 
      str.append(key); 
      str.append(":"); 
      str.append(bundle.get(key)); 
     } 
    } 
    Log.i(TAG, str.toString()); 
    if (Constants.UPGRADE_COMPLETED.equalsIgnoreCase(action)) { 

    } 
} 

}

내가 응용 프로그램 패키지로 업그레이드 방송 의도를 필터링하기 위해 노력하고 있습니다 만 때 나의 응용 프로그램이 업그레이드되어 수신자가 실행됩니다.

매니페스트의 경로 태그 아래에 응용 프로그램 패키지 이름을 설정하려고했지만 도움이되지 않았습니다. 또한 intent.getPackage()을 사용하여 인 텐트에서 패키지 이름을 추출하려고했지만 null을 반환합니다. 그러나 안드로이드는 상태가 :

방송 작업 : 응용 프로그램 패키지의 새로운 버전은 이전 가 설치하던 기존 버전을 교체, 설치 을하고있다. 데이터에는 패키지의 이름이 들어 있습니다.

왜 내 응용 프로그램 패키지 이름이 null인지 알 수 없습니다. 어떤 도움을 주시면 감사하겠습니다.

답변

1

intent.getPackage()이 의도가 특별히 고민했던 패키지/응용 프로그램을 반환하지만 관심있는 수신자에게 보내 졌으므로 그러한 패키지가 없습니다. 당신은 정말 내 시간을 저장된 Uri

+0

으로 업데이트 된 패키지를 반환

사용 intent.getData(). 고마워! – muneikh

관련 문제