WIP: Making correct apks get found when updating repo.

This commit is contained in:
Peter Serwylo 2016-09-29 23:15:02 +10:00
parent 2cc155355b
commit 3a24d21f59
2 changed files with 9 additions and 20 deletions

View File

@ -275,7 +275,7 @@ public class ApkProvider extends FDroidProvider {
builder.append(','); builder.append(',');
} }
final Apk apk = apks.get(i); final Apk apk = apks.get(i);
builder.append(apk.packageName).append(':').append(apk.versionCode); builder.append(apk.appId).append(':').append(apk.versionCode);
} }
return builder.toString(); return builder.toString();
} }
@ -428,35 +428,23 @@ public class ApkProvider extends FDroidProvider {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
for (int i = 0; i < apkDetails.length; i++) { for (int i = 0; i < apkDetails.length; i++) {
String[] parts = apkDetails[i].split(":"); String[] parts = apkDetails[i].split(":");
String packageName = parts[0]; String appId = parts[0];
String versionCode = parts[1]; String versionCode = parts[1];
args[i * 2] = packageName; args[i * 2] = appId;
args[i * 2 + 1] = versionCode; args[i * 2 + 1] = versionCode;
if (i != 0) { if (i != 0) {
sb.append(" OR "); sb.append(" OR ");
} }
sb.append(" ( ");
if (includeAlias) { sb.append(" ( ")
// This is the simpler way to figure out the package name of a row in the apk table. .append(Cols.APP_ID)
// It requires slightly less work for sqlite3 than the alternative below. .append(" = ? ")
sb.append("app.") .append(" AND ")
.append(AppMetadataTable.Cols.PACKAGE_ID)
.append(" = (")
.append(getPackageIdFromPackageNameQuery())
.append(") ");
} else {
sb.append(Cols.APP_ID)
.append(" IN (")
.append(getMetadataIdFromPackageNameQuery())
.append(")");
}
sb.append(" AND ")
.append(alias) .append(alias)
.append(Cols.VERSION_CODE) .append(Cols.VERSION_CODE)
.append(" = ? ) "); .append(" = ? ) ");
} }
return new QuerySelection(sb.toString(), args); return new QuerySelection(sb.toString(), args);
} }

View File

@ -178,6 +178,7 @@ public class RepoPersister {
Schema.ApkTable.Cols.Package.PACKAGE_NAME, Schema.ApkTable.Cols.Package.PACKAGE_NAME,
Schema.ApkTable.Cols.VERSION_CODE, Schema.ApkTable.Cols.VERSION_CODE,
Schema.ApkTable.Cols.REPO_ID, Schema.ApkTable.Cols.REPO_ID,
Schema.ApkTable.Cols.APP_ID,
}; };
List<Apk> existingApks = ApkProvider.Helper.knownApks(context, packages, projection); List<Apk> existingApks = ApkProvider.Helper.knownApks(context, packages, projection);
ArrayList<ContentProviderOperation> operations = new ArrayList<>(packages.size()); ArrayList<ContentProviderOperation> operations = new ArrayList<>(packages.size());