アプリの以前のバージョンに基づいて、アプリに対して実行したい更新があります。
たとえば、ユーザーがバージョン 1 ~ 5 を使用していて、6 または 7 にアップグレードしている場合、更新を実行したいと考えています。また、6 から 7 にアップグレードしている場合は、更新を実行したくありません。
PACKAGE_REMOVE および PACKAGE_REPLACE インテントを受け入れるブロードキャスト レシーバーを使用してこれを達成しようとしましたが、削除されるアプリに関する情報が得られないようです。同じバージョンを再インストールしない限り、PACKAGE_REMOVED インテントは得られません。インテントが受信される前にデバッガーとログ出力がキャッチされないように見えるため、見分けるのは困難です。何か案は?
@Override
public void onReceive(Context context, Intent intent) {
if (isOccurUpdated) {
return;
}
if (action.equalsIgnoreCase("android.intent.action.PACKAGE_REPLACED")) {
String name = info.versionName;
// We are assuming that we didn't get down here if we have already
// done this update
Log.d(TAG,"We receive the REPLACE intent "+name);
if (name.contains(OCCUR_ID_UPDATE) || name.contains(OCCUR_ID_UPDATE_FIX)) {
dbh.occurIdUpdate();
}
} else if (action.equalsIgnoreCase("android.intent.action.PACKAGE_REMOVED")) {
String name = info.versionName;
if (name.contains(OCCUR_ID_UPDATE)) {
isOccurUpdated = true;
}
}
}