diff --git a/app/build.gradle b/app/build.gradle index c258f2fe5..b811a440a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -31,7 +31,7 @@ android { minSdkVersion 19 targetSdkVersion 30 - versionCode 30 + versionCode 31 versionName "4.0.1" vectorDrawables.useSupportLibrary = true diff --git a/app/src/main/java/com/aurora/store/util/PackageUtil.kt b/app/src/main/java/com/aurora/store/util/PackageUtil.kt index 59c432381..d90b3bcba 100644 --- a/app/src/main/java/com/aurora/store/util/PackageUtil.kt +++ b/app/src/main/java/com/aurora/store/util/PackageUtil.kt @@ -39,6 +39,18 @@ object PackageUtil { } } + fun isInstalled(context: Context, packageName: String,versionCode: Int): Boolean { + return try { + val packageInfo = getPackageInfo(context, packageName) + if (packageInfo != null) { + return versionCode == packageInfo.versionCode + } + true + } catch (e: PackageManager.NameNotFoundException) { + false + } + } + fun isUpdatable(context: Context, packageName: String, versionCode: Long): Boolean { return try { val packageInfo = getPackageInfo(context, packageName) 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 e23379beb..cc928e878 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 @@ -26,6 +26,7 @@ import android.view.ViewGroup import com.aurora.extensions.isMIUI import com.aurora.extensions.isMiuiOptimizationDisabled import com.aurora.extensions.showDialog +import com.aurora.store.BuildConfig import com.aurora.store.R import com.aurora.store.data.installer.ServiceInstaller import com.aurora.store.data.model.Installer @@ -154,9 +155,18 @@ class InstallerFragment : BaseFragment() { } private fun checkServicesAvailability(): Boolean { - return PackageUtil.isInstalled( + val isInstalled = PackageUtil.isInstalled( requireContext(), ServiceInstaller.PRIVILEGED_EXTENSION_PACKAGE_NAME ) + + val isCorrectVersionInstalled = + PackageUtil.isInstalled( + requireContext(), + ServiceInstaller.PRIVILEGED_EXTENSION_PACKAGE_NAME, + if (BuildConfig.VERSION_CODE < 31) 8 else 9 + ) + + return isInstalled && isCorrectVersionInstalled } } \ No newline at end of file diff --git a/app/src/main/java/com/aurora/store/view/ui/onboarding/PermissionsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/onboarding/PermissionsFragment.kt index 50c6ad986..5f4fee642 100644 --- a/app/src/main/java/com/aurora/store/view/ui/onboarding/PermissionsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/onboarding/PermissionsFragment.kt @@ -37,7 +37,6 @@ import com.aurora.extensions.toast import com.aurora.store.BuildConfig import com.aurora.store.R import com.aurora.store.data.model.Permission -import com.aurora.store.databinding.FragmentOnboardingInstallerBinding import com.aurora.store.databinding.FragmentOnboardingPermissionsBinding import com.aurora.store.view.epoxy.views.preference.PermissionViewModel_ import com.aurora.store.view.ui.commons.BaseFragment @@ -104,8 +103,8 @@ class PermissionsFragment : BaseFragment() { requireContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE ) == PackageManager.PERMISSION_GRANTED - 1 -> isRAndAbove() && Environment.isExternalStorageManager() - 2 -> isOAndAbove() && requireContext().packageManager.canRequestPackageInstalls() + 1 -> if (isRAndAbove()) Environment.isExternalStorageManager() else true + 2 -> if (isOAndAbove()) requireContext().packageManager.canRequestPackageInstalls() else true else -> false } ) 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 03798f25a..d84eaaff4 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 @@ -26,6 +26,7 @@ import androidx.preference.PreferenceFragmentCompat import com.aurora.extensions.runOnUiThread import com.aurora.extensions.showDialog import com.aurora.extensions.toast +import com.aurora.store.BuildConfig import com.aurora.store.R import com.aurora.store.data.installer.ServiceInstaller import com.aurora.store.util.CommonUtil @@ -100,9 +101,18 @@ class InstallationPreference : PreferenceFragmentCompat() { } private fun checkServicesAvailability(): Boolean { - return PackageUtil.isInstalled( + val isInstalled = PackageUtil.isInstalled( requireContext(), ServiceInstaller.PRIVILEGED_EXTENSION_PACKAGE_NAME ) + + val isCorrectVersionInstalled = + PackageUtil.isInstalled( + requireContext(), + ServiceInstaller.PRIVILEGED_EXTENSION_PACKAGE_NAME, + if (BuildConfig.VERSION_CODE < 31) 8 else 9 + ) + + return isInstalled && isCorrectVersionInstalled } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f4d7332ea..8225d3040 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -214,7 +214,7 @@ "Root access available" "No Root, grant root access or change the installer." "Aurora services is available and ready to install." - "Aurora services not installed, kindly install it or change installer" + "Aurora services is either not installed or version is incorrect (required >= 1.0.9), kindly install it or change installer" "Aurora services not configured. Make sure service is enabled & all permissions are granted" "Installation failed" "Installation cancelled"