From ac595c8232c60fc5ce406c45559205cc98d0014a Mon Sep 17 00:00:00 2001 From: Alexander Georgievskiy Date: Thu, 7 Dec 2023 09:33:00 +0000 Subject: [PATCH] Fix AuroraOSS/AuroraStore#981 allow Sui without Shizuku app --- .../java/com/aurora/store/data/installer/AppInstaller.kt | 7 ++++++- .../aurora/store/view/ui/onboarding/InstallerFragment.kt | 6 ++++-- .../store/view/ui/preferences/InstallationPreference.kt | 7 ++++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/aurora/store/data/installer/AppInstaller.kt b/app/src/main/java/com/aurora/store/data/installer/AppInstaller.kt index a734957c4..b256437d9 100644 --- a/app/src/main/java/com/aurora/store/data/installer/AppInstaller.kt +++ b/app/src/main/java/com/aurora/store/data/installer/AppInstaller.kt @@ -31,6 +31,7 @@ import com.aurora.store.util.Preferences import com.aurora.store.util.Preferences.PREFERENCE_INSTALLER_ID import com.topjohnwu.superuser.Shell import rikka.shizuku.Shizuku +import rikka.sui.Sui open class AppInstaller private constructor(var context: Context) { @@ -83,6 +84,10 @@ open class AppInstaller private constructor(var context: Context) { return PackageUtil.isInstalled(context, ShizukuInstaller.SHIZUKU_PACKAGE_NAME) } + fun hasShizukuOrSui(context: Context): Boolean { + return hasShizuku(context) || Sui.isSui() + } + fun hasShizukuPerm(): Boolean { return Shizuku.checkSelfPermission() == PackageManager.PERMISSION_GRANTED } @@ -136,7 +141,7 @@ open class AppInstaller private constructor(var context: Context) { } 5 -> { if (isOAndAbove()) { - val installer = if (hasShizuku(context) && hasShizukuPerm()) { + val installer = if (hasShizukuOrSui(context) && hasShizukuPerm()) { ShizukuInstaller(context) } else { SessionInstaller(context) diff --git a/app/src/main/java/com/aurora/store/view/ui/onboarding/InstallerFragment.kt b/app/src/main/java/com/aurora/store/view/ui/onboarding/InstallerFragment.kt index 85e4c2c33..36af78b83 100644 --- a/app/src/main/java/com/aurora/store/view/ui/onboarding/InstallerFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/onboarding/InstallerFragment.kt @@ -31,6 +31,7 @@ import com.aurora.store.R import com.aurora.store.data.installer.AppInstaller.Companion.hasAppManager import com.aurora.store.data.installer.AppInstaller.Companion.hasRootAccess import com.aurora.store.data.installer.AppInstaller.Companion.hasShizuku +import com.aurora.store.data.installer.AppInstaller.Companion.hasShizukuOrSui import com.aurora.store.data.installer.AppInstaller.Companion.hasShizukuPerm import com.aurora.store.data.model.Installer import com.aurora.store.databinding.FragmentOnboardingInstallerBinding @@ -42,6 +43,7 @@ import com.aurora.store.view.epoxy.views.preference.InstallerViewModel_ import com.aurora.store.view.ui.commons.BaseFragment import com.google.gson.reflect.TypeToken import rikka.shizuku.Shizuku +import rikka.sui.Sui import java.nio.charset.StandardCharsets @@ -52,7 +54,7 @@ class InstallerFragment : BaseFragment(R.layout.fragment_onboarding_installer) { private var installerId: Int = 0 - private var shizukuAlive = false + private var shizukuAlive = Sui.isSui() private val shizukuAliveListener = Shizuku.OnBinderReceivedListener { Log.d("ShizukuInstaller Alive!") shizukuAlive = true @@ -154,7 +156,7 @@ class InstallerFragment : BaseFragment(R.layout.fragment_onboarding_installer) { } } 5 -> { - if (hasShizuku(requireContext()) && isOAndAbove()) { + if (hasShizukuOrSui(requireContext()) && isOAndAbove()) { if (shizukuAlive && hasShizukuPerm()) { this.installerId = installerId save(PREFERENCE_INSTALLER_ID, installerId) diff --git a/app/src/main/java/com/aurora/store/view/ui/preferences/InstallationPreference.kt b/app/src/main/java/com/aurora/store/view/ui/preferences/InstallationPreference.kt index d58dcceba..c221e248c 100644 --- a/app/src/main/java/com/aurora/store/view/ui/preferences/InstallationPreference.kt +++ b/app/src/main/java/com/aurora/store/view/ui/preferences/InstallationPreference.kt @@ -47,11 +47,12 @@ import com.aurora.store.view.custom.preference.ListPreferenceMaterialDialogFragm import com.aurora.store.view.custom.preference.ListPreferenceMaterialDialogFragmentCompat.Companion.PREFERENCE_DIALOG_FRAGMENT_TAG import com.topjohnwu.superuser.Shell import rikka.shizuku.Shizuku +import rikka.sui.Sui class InstallationPreference : PreferenceFragmentCompat() { - private var shizukuAlive = false + private var shizukuAlive = Sui.isSui() private val shizukuAliveListener = Shizuku.OnBinderReceivedListener { Log.d("ShizukuInstaller Alive!") shizukuAlive = true @@ -156,7 +157,7 @@ class InstallationPreference : PreferenceFragmentCompat() { false } } else if (selectedId == 5) { - if (AppInstaller.hasShizuku(requireContext()) && isOAndAbove()) { + if (AppInstaller.hasShizukuOrSui(requireContext()) && isOAndAbove()) { if (shizukuAlive && AppInstaller.hasShizukuPerm()) { save(Preferences.PREFERENCE_INSTALLER_ID, selectedId) true @@ -225,7 +226,7 @@ class InstallationPreference : PreferenceFragmentCompat() { } private fun checkShizukuAvailability(): Boolean { - return PackageUtil.isInstalled(requireContext(), ShizukuInstaller.SHIZUKU_PACKAGE_NAME) && + return (PackageUtil.isInstalled(requireContext(), ShizukuInstaller.SHIZUKU_PACKAGE_NAME) || Sui.isSui()) && shizukuAlive && Shizuku.checkSelfPermission() == PackageManager.PERMISSION_GRANTED } }