diff --git a/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/config/Config.kt b/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/config/Config.kt index b41b3e2..3d66492 100644 --- a/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/config/Config.kt +++ b/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/config/Config.kt @@ -138,7 +138,7 @@ object PkgConfig { fun getPm(): IPackageManager? { if (iPm == null) { - val binder = ServiceManager.getService("package") ?: return null + val binder = waitAndGetSystemService("package") ?: return null binder.linkToDeath(packageManagerDeathRecipient, 0) iPm = IPackageManager.Stub.asInterface(binder) } @@ -238,6 +238,19 @@ object PkgConfig { }.onFailure { Logger.e("failed to update patch level", it) } + + private fun waitAndGetSystemService(name: String): IBinder? { + var tryCount = 0 + + while (tryCount++ < 70) { + val service = ServiceManager.getService(name) + if (service != null) return service + Logger.e("Package manager is null, waiting for 500ms") + Thread.sleep(500) + } + + return null + } } data class CustomPatchLevel(