From 64f0efc2c0a1252c97364f15d38192a29b481131 Mon Sep 17 00:00:00 2001 From: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com> Date: Tue, 27 May 2025 16:33:58 +0800 Subject: [PATCH] manager: use myUserId as fallback Co-authored-by: Der_Googler <54764558+DerGoogler@users.noreply.github.com> Signed-off-by: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com> --- .../ultra/ui/viewmodel/SuperUserViewModel.kt | 9 ++++++--- .../sukisu/ultra/ui/webui/KsuLibSuProvider.kt | 18 +++++++++++++++++- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/viewmodel/SuperUserViewModel.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/viewmodel/SuperUserViewModel.kt index 3f501199..d4c3d7f7 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/viewmodel/SuperUserViewModel.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/viewmodel/SuperUserViewModel.kt @@ -5,6 +5,7 @@ import android.content.pm.PackageInfo import android.os.Parcelable import android.os.SystemClock import android.util.Log +import android.widget.Toast import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -20,6 +21,7 @@ import java.text.Collator import java.util.* import com.dergoogler.mmrl.platform.Platform import com.dergoogler.mmrl.platform.TIMEOUT_MILLIS +import com.sukisu.ultra.ui.webui.getInstalledPackagesAll import kotlinx.coroutines.delay import kotlinx.coroutines.withTimeoutOrNull @@ -187,9 +189,10 @@ class SuperUserViewModel : ViewModel() { val pm = ksuApp.packageManager val start = SystemClock.elapsedRealtime() - val userManager = Platform.userManager - val packageManager = Platform.packageManager - val packages = packageManager.getInstalledPackages(0, userManager.myUserId) + val packages = Platform.getInstalledPackagesAll { + Log.e(TAG, "getInstalledPackagesAll:", it) + Toast.makeText(ksuApp, "Something went wrong, check logs", Toast.LENGTH_SHORT).show() + } apps = packages.map { val appInfo = it.applicationInfo val uid = appInfo!!.uid diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/webui/KsuLibSuProvider.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/webui/KsuLibSuProvider.kt index 6a620f65..17984b20 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/webui/KsuLibSuProvider.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/webui/KsuLibSuProvider.kt @@ -2,6 +2,7 @@ package com.sukisu.ultra.ui.webui import android.content.ServiceConnection import android.util.Log +import android.content.pm.PackageInfo import com.dergoogler.mmrl.platform.Platform import com.dergoogler.mmrl.platform.model.IProvider import com.dergoogler.mmrl.platform.model.PlatformIntent @@ -53,4 +54,19 @@ suspend fun initPlatform() = withContext(Dispatchers.IO) { Log.e("KsuLibSu", "Failed to initialize platform", e) return@withContext false } -} \ No newline at end of file +} + +fun Platform.Companion.getInstalledPackagesAll(catch: (Exception) -> Unit = {}): List = + try { + val packages = mutableListOf() + val userInfos = userManager.getUsers() + + for (userInfo in userInfos) { + packages.addAll(packageManager.getInstalledPackages(0, userInfo.id)) + } + + packages + } catch (e: Exception) { + catch(e) + packageManager.getInstalledPackages(0, userManager.myUserId) + } \ No newline at end of file