From ad1b3e3aca87177b5f7cb2989718c38b15ba99aa Mon Sep 17 00:00:00 2001 From: LukeMackin Date: Sun, 19 Jul 2026 20:00:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20PackageInstaller=20session=E7=AE=A1?= =?UTF-8?q?=E7=90=86=20=E2=80=94=20openSession=E5=A4=B1=E8=B4=A5abandon=20?= =?UTF-8?q?+=20commit=E5=A4=B1=E8=B4=A5abandon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/src/main/java/dev/yuzu/gca/MainActivity.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/client-android/android/app/src/main/java/dev/yuzu/gca/MainActivity.kt b/packages/client-android/android/app/src/main/java/dev/yuzu/gca/MainActivity.kt index 1fbd110..db9699a 100644 --- a/packages/client-android/android/app/src/main/java/dev/yuzu/gca/MainActivity.kt +++ b/packages/client-android/android/app/src/main/java/dev/yuzu/gca/MainActivity.kt @@ -210,7 +210,13 @@ class MainActivity : AppCompatActivity() { val packageInstaller = packageManager.packageInstaller val params = PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL) val sessionId = packageInstaller.createSession(params) - val session = packageInstaller.openSession(sessionId) + val session: PackageInstaller.Session + try { + session = packageInstaller.openSession(sessionId) + } catch (e: Exception) { + packageInstaller.abandonSession(sessionId) + throw e + } try { apkFile.inputStream().use { input -> session.openWrite("package", 0, apkFile.length()).use { output -> @@ -225,6 +231,9 @@ class MainActivity : AppCompatActivity() { PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) session.commit(pendingIntent.intentSender) + } catch (e: Exception) { + session.abandon() + throw e } finally { session.close() }