Merge branch 'tiramisu-split-perms' into 'master'

Handle API 33 split-permissions

See merge request fdroid/fdroidclient!1129
This commit is contained in:
Hans-Christoph Steiner
2022-11-18 08:59:10 +00:00
2 changed files with 34 additions and 0 deletions

View File

@@ -568,6 +568,23 @@ public class Apk extends ValueObject implements Comparable<Apk>, Parcelable {
}
}
}
if (Build.VERSION.SDK_INT >= 33) {
if (targetSdkVersion >= 33) {
// Do nothing. The targetSdk for the below split-permissions is set to 33,
// so we don't make any changes for apps targetting 33 or above
} else {
// TODO: Change the strings below to Manifest.permission once we target SDK 31.
if (set.contains(Manifest.permission.BODY_SENSORS)) {
set.add("android.permission.BODY_SENSORS_BACKGROUND");
}
if (set.contains(Manifest.permission.READ_EXTERNAL_STORAGE) ||
set.contains(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
set.add("android.permission.READ_MEDIA_AUDIO");
set.add("android.permission.READ_MEDIA_VIDEO");
set.add("android.permission.READ_MEDIA_IMAGES");
}
}
}
requestedPermissions = set.toArray(new String[set.size()]);
}

View File

@@ -139,6 +139,23 @@ public class RepoXMLHandler extends DefaultHandler {
}
}
}
if (Build.VERSION.SDK_INT >= 33) {
if (curapk.targetSdkVersion >= 33) {
// Do nothing. The targetSdk for the below split-permissions is set to 33,
// so we don't make any changes for apps targetting 33 or above
} else {
// TODO: Change the strings below to Manifest.permission once we target SDK 33.
if (requestedPermissionsSet.contains(Manifest.permission.BODY_SENSORS)) {
requestedPermissionsSet.add("android.permission.BODY_SENSORS_BACKGROUND");
}
if (requestedPermissionsSet.contains(Manifest.permission.READ_EXTERNAL_STORAGE) ||
requestedPermissionsSet.contains(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
requestedPermissionsSet.add("android.permission.READ_MEDIA_AUDIO");
requestedPermissionsSet.add("android.permission.READ_MEDIA_VIDEO");
requestedPermissionsSet.add("android.permission.READ_MEDIA_IMAGES");
}
}
}
int size = requestedPermissionsSet.size();
curapk.requestedPermissions = requestedPermissionsSet.toArray(new String[size]);
requestedPermissionsSet.clear();