when parsing APKs for the local repo, correctly set maxSdkVersion
The original logic had maxSdkVersion=0 meaning infinity. That was changed to be a very large value SDK_VERSION_MAX_VALUE, but getMinMaxSdkVersion() was still returning 0 for APKs where maxSdkVersion was not set. This is a follow up on fc0df0dcf4dd0d5f13de82d7cd9254b2b48cb62d
This commit is contained in:
parent
d54748ff39
commit
02d98826a9
@ -126,10 +126,14 @@ public class RepoXMLHandler extends DefaultHandler {
|
||||
curapk.apkName = str;
|
||||
break;
|
||||
case "sdkver":
|
||||
curapk.minSdkVersion = Utils.parseInt(str, 0);
|
||||
curapk.minSdkVersion = Utils.parseInt(str, Apk.SDK_VERSION_MIN_VALUE);
|
||||
break;
|
||||
case "maxsdkver":
|
||||
curapk.maxSdkVersion = Utils.parseInt(str, 0);
|
||||
curapk.maxSdkVersion = Utils.parseInt(str, Apk.SDK_VERSION_MAX_VALUE);
|
||||
if (curapk.maxSdkVersion == 0) {
|
||||
// before fc0df0dcf4dd0d5f13de82d7cd9254b2b48cb62d, this could be 0
|
||||
curapk.maxSdkVersion = Apk.SDK_VERSION_MAX_VALUE;
|
||||
}
|
||||
break;
|
||||
case "added":
|
||||
curapk.added = Utils.parseDate(str, null);
|
||||
|
@ -39,6 +39,7 @@ import com.nostra13.universalimageloader.utils.StorageUtils;
|
||||
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.fdroid.fdroid.compat.FileCompat;
|
||||
import org.fdroid.fdroid.data.Apk;
|
||||
import org.fdroid.fdroid.data.Repo;
|
||||
import org.fdroid.fdroid.data.SanitizedFile;
|
||||
import org.xml.sax.XMLReader;
|
||||
@ -226,8 +227,8 @@ public final class Utils {
|
||||
|
||||
/* PackageManager doesn't give us the min and max sdk versions, so we have
|
||||
* to parse it */
|
||||
private static int getMinMaxSdkVersion(Context context, String packageName,
|
||||
String attrName) {
|
||||
private static int getSdkVersion(Context context, String packageName,
|
||||
String attrName, final int defaultValue) {
|
||||
try {
|
||||
AssetManager am = context.createPackageContext(packageName, 0).getAssets();
|
||||
XmlResourceParser xml = am.openXmlResourceParser("AndroidManifest.xml");
|
||||
@ -245,15 +246,15 @@ public final class Utils {
|
||||
} catch (PackageManager.NameNotFoundException | IOException | XmlPullParserException e) {
|
||||
Log.e(TAG, "Could not get min/max sdk version", e);
|
||||
}
|
||||
return 0;
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
public static int getMinSdkVersion(Context context, String packageName) {
|
||||
return getMinMaxSdkVersion(context, packageName, "minSdkVersion");
|
||||
return getSdkVersion(context, packageName, "minSdkVersion", Apk.SDK_VERSION_MIN_VALUE);
|
||||
}
|
||||
|
||||
public static int getMaxSdkVersion(Context context, String packageName) {
|
||||
return getMinMaxSdkVersion(context, packageName, "maxSdkVersion");
|
||||
return getSdkVersion(context, packageName, "maxSdkVersion", Apk.SDK_VERSION_MAX_VALUE);
|
||||
}
|
||||
|
||||
// return a fingerprint formatted for display
|
||||
|
@ -14,6 +14,7 @@ public class Apk extends ValueObject implements Comparable<Apk> {
|
||||
|
||||
// Using only byte-range keeps it only 8-bits in the SQLite database
|
||||
public static final int SDK_VERSION_MAX_VALUE = Byte.MAX_VALUE;
|
||||
public static final int SDK_VERSION_MIN_VALUE = 0;
|
||||
|
||||
public String packageName;
|
||||
public String versionName;
|
||||
@ -22,7 +23,7 @@ public class Apk extends ValueObject implements Comparable<Apk> {
|
||||
public long repo; // ID of the repo it comes from
|
||||
public String hash;
|
||||
public String hashType;
|
||||
public int minSdkVersion; // 0 if unknown
|
||||
public int minSdkVersion = SDK_VERSION_MIN_VALUE; // 0 if unknown
|
||||
public int maxSdkVersion = SDK_VERSION_MAX_VALUE; // "infinity" if not set
|
||||
public Date added;
|
||||
public Utils.CommaSeparatedList permissions; // null if empty or
|
||||
|
@ -23,6 +23,7 @@ import org.fdroid.fdroid.Hasher;
|
||||
import org.fdroid.fdroid.Preferences;
|
||||
import org.fdroid.fdroid.R;
|
||||
import org.fdroid.fdroid.Utils;
|
||||
import org.fdroid.fdroid.data.Apk;
|
||||
import org.fdroid.fdroid.data.App;
|
||||
import org.fdroid.fdroid.data.SanitizedFile;
|
||||
import org.xmlpull.v1.XmlPullParserException;
|
||||
@ -452,9 +453,13 @@ public final class LocalRepoManager {
|
||||
tagHash(app);
|
||||
tag("sig", app.installedApk.sig.toLowerCase(Locale.US));
|
||||
tag("size", app.installedApk.installedFile.length());
|
||||
tag("sdkver", app.installedApk.minSdkVersion);
|
||||
tag("maxsdkver", app.installedApk.maxSdkVersion);
|
||||
tag("added", app.installedApk.added);
|
||||
if (app.installedApk.minSdkVersion > Apk.SDK_VERSION_MIN_VALUE) {
|
||||
tag("sdkver", app.installedApk.minSdkVersion);
|
||||
}
|
||||
if (app.installedApk.maxSdkVersion < Apk.SDK_VERSION_MAX_VALUE) {
|
||||
tag("maxsdkver", app.installedApk.maxSdkVersion);
|
||||
}
|
||||
tagFeatures(app);
|
||||
tagPermissions(app);
|
||||
tagNativecode(app);
|
||||
|
Loading…
x
Reference in New Issue
Block a user