Handle API 29 split-permissions v2

* This new permission comes courtesy of the Q December update.
* Read external storage implies access media location

References:
* ac7b10c135%5E%21/#F1
This commit is contained in:
Chirayu Desai 2019-12-10 00:49:01 +05:30
parent ee1f4d3dc4
commit fae735c468
2 changed files with 12 additions and 0 deletions

View File

@ -511,6 +511,9 @@ public class Apk extends ValueObject implements Comparable<Apk>, Parcelable {
* Also, * Also,
* {@link Manifest.permission#ACCESS_FINE_LOCATION} implies * {@link Manifest.permission#ACCESS_FINE_LOCATION} implies
* {@link Manifest.permission#ACCESS_COARSE_LOCATION}. * {@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, * Many of these rules are for quite old Android versions,
* so they are not included here. * so they are not included here.
* *
@ -543,6 +546,10 @@ public class Apk extends ValueObject implements Comparable<Apk>, Parcelable {
if (Build.VERSION.SDK_INT >= 29 && set.contains(Manifest.permission.ACCESS_FINE_LOCATION)) { if (Build.VERSION.SDK_INT >= 29 && set.contains(Manifest.permission.ACCESS_FINE_LOCATION)) {
set.add(Manifest.permission.ACCESS_COARSE_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()]); requestedPermissions = set.toArray(new String[set.size()]);
} }

View File

@ -115,6 +115,11 @@ public class RepoXMLHandler extends DefaultHandler {
requestedPermissionsSet.contains(Manifest.permission.ACCESS_FINE_LOCATION)) { requestedPermissionsSet.contains(Manifest.permission.ACCESS_FINE_LOCATION)) {
requestedPermissionsSet.add(Manifest.permission.ACCESS_COARSE_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(); int size = requestedPermissionsSet.size();
curapk.requestedPermissions = requestedPermissionsSet.toArray(new String[size]); curapk.requestedPermissions = requestedPermissionsSet.toArray(new String[size]);
requestedPermissionsSet.clear(); requestedPermissionsSet.clear();