uses-permission fields as Apk instance vars

This adds support for the index fields: uses-permission and
uses-permission-sdk-23.  For most index fields, Jackson handles directly
mapping the incoming data to the instance vars based on the matching
field/var names.  For uses-permission*, methods are declared for
handling those properties in the incoming index.

These fields will be ignored when using the v0 index.xml format.
This commit is contained in:
Hans-Christoph Steiner 2017-02-27 14:24:35 +01:00 committed by Peter Serwylo
parent befdc4a850
commit 7e0ae10e84

View File

@ -8,7 +8,7 @@ import android.os.Build;
import android.os.Parcel; import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.fdroid.fdroid.BuildConfig; import org.fdroid.fdroid.BuildConfig;
import org.fdroid.fdroid.RepoXMLHandler; import org.fdroid.fdroid.RepoXMLHandler;
import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.Utils;
@ -429,4 +429,27 @@ public class Apk extends ValueObject implements Comparable<Apk>, Parcelable {
return null; 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()]);
}
} }