diff --git a/app/src/androidTest/java/org/fdroid/fdroid/installer/ApkVerifierTest.java b/app/src/androidTest/java/org/fdroid/fdroid/installer/ApkVerifierTest.java index d40cce4a9..ee18b006f 100644 --- a/app/src/androidTest/java/org/fdroid/fdroid/installer/ApkVerifierTest.java +++ b/app/src/androidTest/java/org/fdroid/fdroid/installer/ApkVerifierTest.java @@ -22,10 +22,10 @@ package org.fdroid.fdroid.installer; import android.app.Instrumentation; import android.net.Uri; import android.os.Build; -import androidx.annotation.NonNull; -import androidx.test.platform.app.InstrumentationRegistry; -import androidx.test.ext.junit.runners.AndroidJUnit4; import android.util.Log; +import androidx.annotation.NonNull; +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.platform.app.InstrumentationRegistry; import org.fdroid.fdroid.AssetUtils; import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.compat.FileCompatTest; @@ -113,7 +113,7 @@ public class ApkVerifierTest { Apk apk = new Apk(); apk.packageName = "org.fdroid.permissions.sdk14"; apk.targetSdkVersion = 14; - String[] noPrefixPermissions = new String[]{ + ArrayList noPrefixPermissionsList = new ArrayList<>(Arrays.asList( "AUTHENTICATE_ACCOUNTS", "MANAGE_ACCOUNTS", "READ_PROFILE", @@ -129,8 +129,13 @@ public class ApkVerifierTest { "READ_SYNC_SETTINGS", "WRITE_SYNC_SETTINGS", "WRITE_CALL_LOG", // implied-permission! - "READ_CALL_LOG", // implied-permission! - }; + "READ_CALL_LOG" // implied-permission! + )); + if (Build.VERSION.SDK_INT >= 29) { + noPrefixPermissionsList.add("android.permission.ACCESS_MEDIA_LOCATION"); + } + String[] noPrefixPermissions = noPrefixPermissionsList.toArray(new String[0]); + for (int i = 0; i < noPrefixPermissions.length; i++) { noPrefixPermissions[i] = RepoXMLHandler.fdroidToAndroidPermission(noPrefixPermissions[i]); } @@ -177,7 +182,7 @@ public class ApkVerifierTest { Apk apk = new Apk(); apk.packageName = "org.fdroid.permissions.sdk14"; apk.targetSdkVersion = 14; - apk.requestedPermissions = new String[]{ + TreeSet expectedSet = new TreeSet<>(Arrays.asList( "android.permission.AUTHENTICATE_ACCOUNTS", "android.permission.MANAGE_ACCOUNTS", "android.permission.READ_PROFILE", @@ -193,8 +198,12 @@ public class ApkVerifierTest { "android.permission.READ_SYNC_SETTINGS", "android.permission.WRITE_SYNC_SETTINGS", "android.permission.WRITE_CALL_LOG", // implied-permission! - "android.permission.READ_CALL_LOG", // implied-permission! - }; + "android.permission.READ_CALL_LOG"// implied-permission! + )); + if (Build.VERSION.SDK_INT >= 29) { + expectedSet.add("android.permission.ACCESS_MEDIA_LOCATION"); + } + apk.requestedPermissions = expectedSet.toArray(new String[0]); Uri uri = Uri.fromFile(sdk14Apk); @@ -371,6 +380,9 @@ public class ApkVerifierTest { "android.permission.MANAGE_ACCOUNTS" )); } + if (Build.VERSION.SDK_INT >= 29) { + expectedSet.add("android.permission.ACCESS_MEDIA_LOCATION"); + } Apk apk = actualDetails.apks.get(1); Log.i(TAG, "APK: " + apk.apkName); HashSet actualSet = new HashSet<>(Arrays.asList(apk.requestedPermissions)); @@ -407,6 +419,9 @@ public class ApkVerifierTest { "org.dmfs.permission.READ_TASKS", "org.dmfs.permission.WRITE_TASKS" )); + if (Build.VERSION.SDK_INT >= 29) { + expectedSet.add("android.permission.ACCESS_MEDIA_LOCATION"); + } expectedPermissions = expectedSet.toArray(new String[expectedSet.size()]); apk = actualDetails.apks.get(2); Log.i(TAG, "APK: " + apk.apkName); diff --git a/app/src/main/java/org/fdroid/fdroid/installer/ApkVerifier.java b/app/src/main/java/org/fdroid/fdroid/installer/ApkVerifier.java index b97738fc7..b20db721d 100644 --- a/app/src/main/java/org/fdroid/fdroid/installer/ApkVerifier.java +++ b/app/src/main/java/org/fdroid/fdroid/installer/ApkVerifier.java @@ -23,9 +23,9 @@ import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.net.Uri; -import androidx.annotation.Nullable; import android.text.TextUtils; import android.util.Log; +import androidx.annotation.Nullable; import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.data.Apk;