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 863231bb4..381a64d37 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/Apk.java +++ b/app/src/main/java/org/fdroid/fdroid/data/Apk.java @@ -511,6 +511,9 @@ public class Apk extends ValueObject implements Comparable, Parcelable { * Also, * {@link Manifest.permission#ACCESS_FINE_LOCATION} implies * {@link Manifest.permission#ACCESS_COARSE_LOCATION}. + * And, + * {@link Manifest.permission#READ_EXTERNAL_STORAGE} implies + * {@link Manifest.permission#ACCESS_MEDIA_LOCATION} * Many of these rules are for quite old Android versions, * so they are not included here. * @@ -543,6 +546,10 @@ public class Apk extends ValueObject implements Comparable, Parcelable { if (Build.VERSION.SDK_INT >= 29 && set.contains(Manifest.permission.ACCESS_FINE_LOCATION)) { set.add(Manifest.permission.ACCESS_COARSE_LOCATION); } + if (Build.VERSION.SDK_INT >= 29 && set.contains(Manifest.permission.READ_EXTERNAL_STORAGE)) { + // TODO: Change the below to Manifest.permission once we target SDK 29. + set.add("android.permission.ACCESS_MEDIA_LOCATION"); + } requestedPermissions = set.toArray(new String[set.size()]); } diff --git a/app/src/main/java/org/fdroid/fdroid/data/RepoXMLHandler.java b/app/src/main/java/org/fdroid/fdroid/data/RepoXMLHandler.java index 9b6b108cd..a4483e730 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/RepoXMLHandler.java +++ b/app/src/main/java/org/fdroid/fdroid/data/RepoXMLHandler.java @@ -115,6 +115,11 @@ public class RepoXMLHandler extends DefaultHandler { requestedPermissionsSet.contains(Manifest.permission.ACCESS_FINE_LOCATION)) { requestedPermissionsSet.add(Manifest.permission.ACCESS_COARSE_LOCATION); } + if (Build.VERSION.SDK_INT >= 29 && + requestedPermissionsSet.contains(Manifest.permission.READ_EXTERNAL_STORAGE)) { + // TODO: Change the below to Manifest.permission once we target SDK 29. + requestedPermissionsSet.add("android.permission.ACCESS_MEDIA_LOCATION"); + } int size = requestedPermissionsSet.size(); curapk.requestedPermissions = requestedPermissionsSet.toArray(new String[size]); requestedPermissionsSet.clear();