我有一个更新,我想根据应用程序的先前版本为我的应用程序运行。
例如,如果用户有版本 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;
}
}
}