diff --git a/app/src/main/java/org/fdroid/fdroid/data/Apk.java b/app/src/main/java/org/fdroid/fdroid/data/Apk.java
index e08078756..f7e6c3df8 100644
--- a/app/src/main/java/org/fdroid/fdroid/data/Apk.java
+++ b/app/src/main/java/org/fdroid/fdroid/data/Apk.java
@@ -8,7 +8,7 @@ import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.support.annotation.NonNull;
-
+import com.fasterxml.jackson.annotation.JsonProperty;
 import org.fdroid.fdroid.BuildConfig;
 import org.fdroid.fdroid.RepoXMLHandler;
 import org.fdroid.fdroid.Utils;
@@ -429,4 +429,27 @@ public class Apk extends ValueObject implements Comparable<Apk>, Parcelable {
         return null;
     }
 
+    @JsonProperty("uses-permission")
+    private void setUsesPermission(Object[][] permissions) { // NOPMD
+        setRequestedPermissions(permissions, 0);
+    }
+
+    @JsonProperty("uses-permission-sdk-23")
+    private void setUsesPermissionSdk23(Object[][] permissions) { // NOPMD
+        setRequestedPermissions(permissions, 23);
+    }
+
+    private void setRequestedPermissions(Object[][] permissions, int minSdk) {
+        HashSet<String> set = new HashSet<>();
+        for (Object[] versions : permissions) {
+            int maxSdk = Integer.MAX_VALUE;
+            if (versions[1] != null) {
+                maxSdk = (int) versions[1];
+            }
+            if (minSdk <= Build.VERSION.SDK_INT && Build.VERSION.SDK_INT <= maxSdk) {
+                set.add((String) versions[0]);
+            }
+        }
+        requestedPermissions = set.toArray(new String[set.size()]);
+    }
 }