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"