From fae735c468cf350627a3b2a31cf4520f5b4756c8 Mon Sep 17 00:00:00 2001 From: Chirayu Desai Date: Tue, 10 Dec 2019 00:49:01 +0530 Subject: [PATCH] Handle API 29 split-permissions v2 * This new permission comes courtesy of the Q December update. * Read external storage implies access media location References: * https://android.googlesource.com/platform/frameworks/base/+/ac7b10c135bb148edcad1aad8e19c733d333f769%5E%21/#F1 --- app/src/main/java/org/fdroid/fdroid/data/Apk.java | 7 +++++++ .../main/java/org/fdroid/fdroid/data/RepoXMLHandler.java | 5 +++++ 2 files changed, 12 insertions(+) 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();