From 45ecc9634510fb8db790e06dc3ebd0c472a54593 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Patel Date: Thu, 25 Feb 2021 11:13:56 +0530 Subject: [PATCH] Check root status when user prompts for root installer --- .../ui/preferences/InstallationPreference.kt | 44 ++++++++++++++++++- 1 file changed, 42 insertions(+), 2 deletions(-) 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 9a5d4ade6..d161e0ff3 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 @@ -23,11 +23,14 @@ import android.os.Bundle import android.view.View import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat +import com.aurora.extensions.runOnUiThread +import com.aurora.extensions.toast import com.aurora.store.R import com.aurora.store.util.CommonUtil import com.aurora.store.util.Preferences -import com.aurora.extensions.runOnUiThread -import com.aurora.extensions.toast +import com.aurora.store.util.save +import com.aurora.store.view.custom.preference.AuroraListPreference +import com.topjohnwu.superuser.Shell class InstallationPreference : PreferenceFragmentCompat() { @@ -40,6 +43,7 @@ class InstallationPreference : PreferenceFragmentCompat() { val abandonPreference: Preference? = findPreference(Preferences.INSTALLATION_ABANDON_SESSION) + abandonPreference?.let { it.onPreferenceClickListener = Preference.OnPreferenceClickListener { @@ -50,5 +54,41 @@ class InstallationPreference : PreferenceFragmentCompat() { false } } + + val installerPreference: AuroraListPreference? = + findPreference(Preferences.PREFERENCE_INSTALLER_ID) + + installerPreference?.let { + it.onPreferenceChangeListener = + Preference.OnPreferenceChangeListener { _, newValue -> + val selectedId = Integer.parseInt(newValue as String) + if (selectedId == 2) { + if (checkRoot()) { + save(Preferences.PREFERENCE_INSTALLER_ID, selectedId) + true + } else { + false + } + } else { + save(Preferences.PREFERENCE_INSTALLER_ID, selectedId) + true + } + } + } + } + + private fun checkRoot(): Boolean { + var isRootAvailable = false + + Shell.getShell { + isRootAvailable = it.isRoot + + if (isRootAvailable) + toast(R.string.installer_root_available) + else + toast(R.string.installer_root_unavailable) + } + + return isRootAvailable } }