Skip to content

Commit 80f1fc6

Browse files
authored
feat(Prime Video): Add Rename shared permissions patch (#5049)
1 parent a94982b commit 80f1fc6

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

patches/api/patches.api

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,10 @@ public final class app/revanced/patches/primevideo/misc/extension/ExtensionPatch
440440
public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
441441
}
442442

443+
public final class app/revanced/patches/primevideo/misc/permissions/RenamePermissionsPatchKt {
444+
public static final fun getRenamePermissionsPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
445+
}
446+
443447
public final class app/revanced/patches/protonmail/signature/RemoveSentFromSignaturePatchKt {
444448
public static final fun getRemoveSentFromSignaturePatch ()Lapp/revanced/patcher/patch/ResourcePatch;
445449
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package app.revanced.patches.primevideo.misc.permissions
2+
3+
import app.revanced.patcher.patch.PatchException
4+
import app.revanced.patcher.patch.resourcePatch
5+
import app.revanced.util.asSequence
6+
import app.revanced.util.getNode
7+
import org.w3c.dom.Element
8+
9+
@Suppress("unused")
10+
val renamePermissionsPatch = resourcePatch(
11+
name = "Rename shared permissions",
12+
description = "Rename certain permissions shared across Amazon apps. " +
13+
"Applying this patch can fix installation errors, but can also break features in certain apps.",
14+
use = false
15+
) {
16+
compatibleWith("com.amazon.avod.thirdpartyclient")
17+
18+
val permissionNames = setOf(
19+
"com.amazon.identity.permission.CAN_CALL_MAP_INFORMATION_PROVIDER",
20+
"com.amazon.identity.auth.device.perm.AUTH_SDK",
21+
"com.amazon.dcp.sso.permission.account.changed",
22+
"com.amazon.dcp.sso.permission.AmazonAccountPropertyService.property.changed",
23+
"com.amazon.identity.permission.CALL_AMAZON_DEVICE_INFORMATION_PROVIDER",
24+
"com.amazon.appmanager.preload.permission.READ_PRELOAD_DEVICE_INFO_PROVIDER"
25+
)
26+
27+
execute {
28+
document("AndroidManifest.xml").use { document ->
29+
val manifest = document.getNode("manifest") as Element
30+
31+
val permissions = manifest
32+
.getElementsByTagName("permission")
33+
.asSequence()
34+
.map { Pair(it as Element, it.getAttribute("android:name")) }
35+
.filter { (_, name) -> name in permissionNames }
36+
37+
if (permissions.none()) throw PatchException("Could not find any permissions to rename")
38+
39+
permissions.forEach { (element, name) ->
40+
element.setAttribute("android:name", "revanced.$name")
41+
}
42+
}
43+
}
44+
}

0 commit comments

Comments
 (0)