Don't show an older installed version as an update

This commit is contained in:
Ciaran Gultnieks 2010-12-08 15:29:30 +00:00
parent 234bdd16fb
commit 08e4ebaa29

View File

@ -76,6 +76,7 @@ public class DB {
public String trackerURL; public String trackerURL;
public String sourceURL; public String sourceURL;
public String installedVersion; public String installedVersion;
public int installedVerCode;
public String marketVersion; public String marketVersion;
public int marketVercode; public int marketVercode;
@ -193,7 +194,10 @@ public class DB {
"alter table " + TABLE_APP + " add marketVercode integer" }, "alter table " + TABLE_APP + " add marketVercode integer" },
// Version 3... // Version 3...
{ "alter table " + TABLE_APK + " add apkSource text" } { "alter table " + TABLE_APK + " add apkSource text" },
// Version 4...
{ "alter table " + TABLE_APP + " add installedVerCode integer" }
}; };
@ -291,6 +295,8 @@ public class DB {
app.sourceURL = c.getString(c.getColumnIndex("sourceURL")); app.sourceURL = c.getString(c.getColumnIndex("sourceURL"));
app.installedVersion = c.getString(c app.installedVersion = c.getString(c
.getColumnIndex("installedVersion")); .getColumnIndex("installedVersion"));
app.installedVerCode = c.getInt(c
.getColumnIndex("installedVerCode"));
app.marketVersion = c.getString(c app.marketVersion = c.getString(c
.getColumnIndex("marketVersion")); .getColumnIndex("marketVersion"));
app.marketVercode = c.getInt(c.getColumnIndex("marketVercode")); app.marketVercode = c.getInt(c.getColumnIndex("marketVercode"));
@ -336,12 +342,14 @@ public class DB {
getUpdates(result); getUpdates(result);
} }
// We'll say an application has updates if it's installed and the // We'll say an application has updates if it's installed AND the
// installed version is not the 'current' one. // installed version is not the 'current' one AND the installed
// version is older than the current one.
for (App app : result) { for (App app : result) {
Apk curver = app.getCurrentVersion();
if (app.installedVersion != null if (app.installedVersion != null
&& !app.installedVersion && !app.installedVersion.equals(curver.version)) {
.equals(app.getCurrentVersion().version)) { if(app.installedVerCode < curver.vercode)
app.hasUpdates = true; app.hasUpdates = true;
} }
} }
@ -361,15 +369,17 @@ public class DB {
for (DB.App app : apps) { for (DB.App app : apps) {
if (systemApks.containsKey(app.id)) { if (systemApks.containsKey(app.id)) {
String version = systemApks.get(app.id).versionName; PackageInfo sysapk = systemApks.get(app.id);
String version = sysapk.versionName;
int vercode = sysapk.versionCode;
if (app.installedVersion == null if (app.installedVersion == null
|| !app.installedVersion.equals(version)) { || !app.installedVersion.equals(version)) {
setInstalledVersion(app.id, version); setInstalledVersion(app.id, version, vercode);
app.installedVersion = version; app.installedVersion = version;
} }
} else { } else {
if (app.installedVersion != null) { if (app.installedVersion != null) {
setInstalledVersion(app.id, null); setInstalledVersion(app.id, null, 0);
app.installedVersion = null; app.installedVersion = null;
} }
} }
@ -507,6 +517,7 @@ public class DB {
values.put("trackerURL", upapp.trackerURL); values.put("trackerURL", upapp.trackerURL);
values.put("sourceURL", upapp.sourceURL); values.put("sourceURL", upapp.sourceURL);
values.put("installedVersion", upapp.installedVersion); values.put("installedVersion", upapp.installedVersion);
values.put("installedVerCode", upapp.installedVerCode);
values.put("marketVersion", upapp.marketVersion); values.put("marketVersion", upapp.marketVersion);
values.put("marketVercode", upapp.marketVercode); values.put("marketVercode", upapp.marketVercode);
values.put("hasUpdates", upapp.hasUpdates ? 1 : 0); values.put("hasUpdates", upapp.hasUpdates ? 1 : 0);
@ -541,9 +552,10 @@ public class DB {
} }
} }
public void setInstalledVersion(String id, String version) { public void setInstalledVersion(String id, String version, int vercode) {
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
values.put("installedVersion", version); values.put("installedVersion", version);
values.put("installedVerCode", vercode);
db.update(TABLE_APP, values, "id = ?", new String[] { id }); db.update(TABLE_APP, values, "id = ?", new String[] { id });
} }