Skip to content

Commit

Permalink
fix: shizuku suspend not working on some android 10 devices
Browse files Browse the repository at this point in the history
  • Loading branch information
aistra0528 committed Jun 5, 2024
1 parent d769527 commit 38be466
Showing 1 changed file with 23 additions and 14 deletions.
37 changes: 23 additions & 14 deletions app/src/main/kotlin/com/aistra/hail/utils/HShizuku.kt
Original file line number Diff line number Diff line change
Expand Up @@ -129,20 +129,14 @@ object HShizuku {
else throw it
}

HTarget.Q -> setPackagesSuspendedAsUserSinceQ(pm, packageName, suspended)

HTarget.P -> HiddenApiBypass.invoke(
pm::class.java,
pm,
"setPackagesSuspendedAsUser",
arrayOf(packageName),
suspended,
null,
null,
null /*dialogMessage*/,
callerPackage,
userId
)
HTarget.Q -> runCatching {
setPackagesSuspendedAsUserSinceQ(pm, packageName, suspended)
}.getOrElse {
if (it is NoSuchMethodException) setPackagesSuspendedAsUserSinceP(pm, packageName, suspended)
else throw it
}

HTarget.P -> setPackagesSuspendedAsUserSinceP(pm, packageName, suspended)

HTarget.N -> pm::class.java.getMethod(
"setPackagesSuspendedAsUser", Array<String>::class.java, Boolean::class.java, Int::class.java
Expand Down Expand Up @@ -171,6 +165,21 @@ object HShizuku {
userId
)

@RequiresApi(Build.VERSION_CODES.P)
private fun setPackagesSuspendedAsUserSinceP(pm: Any, packageName: String, suspended: Boolean): Any =
HiddenApiBypass.invoke(
pm::class.java,
pm,
"setPackagesSuspendedAsUser",
arrayOf(packageName),
suspended,
null,
null,
null /*dialogMessage*/,
callerPackage,
userId
)

private val suspendDialogInfo: Any
@RequiresApi(Build.VERSION_CODES.P) @SuppressLint("PrivateApi") get() = HiddenApiBypass.newInstance(
Class.forName("android.content.pm.SuspendDialogInfo\$Builder")
Expand Down

1 comment on commit 38be466

@aistra0528
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.