From 09444b018159b3f5d6b786cfcb88fde1bcfd387a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Thu, 14 May 2015 17:03:17 +0200 Subject: [PATCH] Also populate maxSdkVersion when parsing a package There is no reason why this should fail, so make the default be 0. --- F-Droid/src/org/fdroid/fdroid/Utils.java | 15 ++++++++++++--- F-Droid/src/org/fdroid/fdroid/data/App.java | 1 + 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/F-Droid/src/org/fdroid/fdroid/Utils.java b/F-Droid/src/org/fdroid/fdroid/Utils.java index 38376cbe6..eee750016 100644 --- a/F-Droid/src/org/fdroid/fdroid/Utils.java +++ b/F-Droid/src/org/fdroid/fdroid/Utils.java @@ -219,7 +219,8 @@ public final class Utils { } /* PackageManager doesn't give us minSdkVersion, so we have to parse it */ - public static int getMinSdkVersion(Context context, String packageName) { + private static int getMinMaxSdkVersion(Context context, String packageName, + String attrName) { try { AssetManager am = context.createPackageContext(packageName, 0).getAssets(); XmlResourceParser xml = am.openXmlResourceParser("AndroidManifest.xml"); @@ -227,7 +228,7 @@ public final class Utils { while (eventType != XmlPullParser.END_DOCUMENT) { if (eventType == XmlPullParser.START_TAG && xml.getName().equals("uses-sdk")) { for (int j = 0; j < xml.getAttributeCount(); j++) { - if (xml.getAttributeName(j).equals("minSdkVersion")) { + if (xml.getAttributeName(j).equals(attrName)) { return Integer.parseInt(xml.getAttributeValue(j)); } } @@ -237,7 +238,15 @@ public final class Utils { } catch (PackageManager.NameNotFoundException | IOException | XmlPullParserException e) { e.printStackTrace(); } - return 8; // some kind of hopeful default + return 0; + } + + public static int getMinSdkVersion(Context context, String packageName) { + return getMinMaxSdkVersion(context, packageName, "minSdkVersion"); + } + + public static int getMaxSdkVersion(Context context, String packageName) { + return getMinMaxSdkVersion(context, packageName, "maxSdkVersion"); } public static int countSubstringOccurrence(File file, String substring) throws IOException { diff --git a/F-Droid/src/org/fdroid/fdroid/data/App.java b/F-Droid/src/org/fdroid/fdroid/data/App.java index 5356afe39..785b1246c 100644 --- a/F-Droid/src/org/fdroid/fdroid/data/App.java +++ b/F-Droid/src/org/fdroid/fdroid/data/App.java @@ -257,6 +257,7 @@ public class App extends ValueObject implements Comparable { apk.hash = Utils.getBinaryHash(apkFile, apk.hashType); apk.added = this.added; apk.minSdkVersion = Utils.getMinSdkVersion(context, packageName); + apk.maxSdkVersion = Utils.getMaxSdkVersion(context, packageName); apk.id = this.id; apk.installedFile = apkFile; apk.permissions = Utils.CommaSeparatedList.make(packageInfo.requestedPermissions);