diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/installer/ShizukuInstaller.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/installer/ShizukuInstaller.kt index 303a2dad8..834a40d6f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/installer/ShizukuInstaller.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/installer/ShizukuInstaller.kt @@ -109,9 +109,9 @@ class ShizukuInstaller(private val service: Service) : Installer(service) { override fun processEntry(entry: Entry) { super.processEntry(entry) try { - shellInterface?.install( - service.contentResolver.openAssetFileDescriptor(entry.uri, "r"), - ) + service.contentResolver.openAssetFileDescriptor(entry.uri, "r").use { + shellInterface?.install(it) + } } catch (e: Exception) { logcat(LogPriority.ERROR, e) { "Failed to install extension ${entry.downloadId} ${entry.uri}" } continueQueue(InstallStep.Error) @@ -124,7 +124,13 @@ class ShizukuInstaller(private val service: Service) : Installer(service) { override fun onDestroy() { Shizuku.removeBinderDeadListener(shizukuDeadListener) Shizuku.removeRequestPermissionResultListener(shizukuPermissionListener) - Shizuku.unbindUserService(shizukuArgs, connection, true) + if (Shizuku.pingBinder()) { + try { + Shizuku.unbindUserService(shizukuArgs, connection, true) + } catch (e: Exception) { + logcat(LogPriority.WARN, e) { "Failed to unbind shizuku service" } + } + } service.unregisterReceiver(receiver) logcat { "ShizukuInstaller destroy" } scope.cancel()