현재 응용 프로그램 업그레이드 수신자가 여러 번 호출되는 응용 프로그램에서 문제가 발생합니다. 다음은 매니페스트 코드 :수신기 트리거를 여러 번 업그레이드하십시오.
<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인지 알 수 없습니다. 어떤 도움을 주시면 감사하겠습니다.
으로 업데이트 된 패키지를 반환
사용
intent.getData()
. 고마워! – muneikh