From 80f1fc629e30e391bd5877f07dbdf4b6613bd1cf Mon Sep 17 00:00:00 2001 From: hoodles <207470673+hoo-dles@users.noreply.github.com> Date: Wed, 28 May 2025 13:38:09 -0700 Subject: [PATCH] feat(Prime Video): Add `Rename shared permissions` patch (#5049) --- patches/api/patches.api | 4 ++ .../permissions/RenamePermissionsPatch.kt | 44 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 patches/src/main/kotlin/app/revanced/patches/primevideo/misc/permissions/RenamePermissionsPatch.kt diff --git a/patches/api/patches.api b/patches/api/patches.api index 09dbd1698..cb6d96555 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -440,6 +440,10 @@ public final class app/revanced/patches/primevideo/misc/extension/ExtensionPatch public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/primevideo/misc/permissions/RenamePermissionsPatchKt { + public static final fun getRenamePermissionsPatch ()Lapp/revanced/patcher/patch/ResourcePatch; +} + public final class app/revanced/patches/protonmail/signature/RemoveSentFromSignaturePatchKt { public static final fun getRemoveSentFromSignaturePatch ()Lapp/revanced/patcher/patch/ResourcePatch; } diff --git a/patches/src/main/kotlin/app/revanced/patches/primevideo/misc/permissions/RenamePermissionsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/primevideo/misc/permissions/RenamePermissionsPatch.kt new file mode 100644 index 000000000..9a671879f --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/primevideo/misc/permissions/RenamePermissionsPatch.kt @@ -0,0 +1,44 @@ +package app.revanced.patches.primevideo.misc.permissions + +import app.revanced.patcher.patch.PatchException +import app.revanced.patcher.patch.resourcePatch +import app.revanced.util.asSequence +import app.revanced.util.getNode +import org.w3c.dom.Element + +@Suppress("unused") +val renamePermissionsPatch = resourcePatch( + name = "Rename shared permissions", + description = "Rename certain permissions shared across Amazon apps. " + + "Applying this patch can fix installation errors, but can also break features in certain apps.", + use = false +) { + compatibleWith("com.amazon.avod.thirdpartyclient") + + val permissionNames = setOf( + "com.amazon.identity.permission.CAN_CALL_MAP_INFORMATION_PROVIDER", + "com.amazon.identity.auth.device.perm.AUTH_SDK", + "com.amazon.dcp.sso.permission.account.changed", + "com.amazon.dcp.sso.permission.AmazonAccountPropertyService.property.changed", + "com.amazon.identity.permission.CALL_AMAZON_DEVICE_INFORMATION_PROVIDER", + "com.amazon.appmanager.preload.permission.READ_PRELOAD_DEVICE_INFO_PROVIDER" + ) + + execute { + document("AndroidManifest.xml").use { document -> + val manifest = document.getNode("manifest") as Element + + val permissions = manifest + .getElementsByTagName("permission") + .asSequence() + .map { Pair(it as Element, it.getAttribute("android:name")) } + .filter { (_, name) -> name in permissionNames } + + if (permissions.none()) throw PatchException("Could not find any permissions to rename") + + permissions.forEach { (element, name) -> + element.setAttribute("android:name", "revanced.$name") + } + } + } +}