Ensure correct version of services is installed

This commit is contained in:
Rahul Kumar Patel
2021-03-02 02:34:37 +05:30
parent 1377bd1003
commit d63ff3790f
6 changed files with 38 additions and 7 deletions

View File

@@ -31,7 +31,7 @@ android {
minSdkVersion 19 minSdkVersion 19
targetSdkVersion 30 targetSdkVersion 30
versionCode 30 versionCode 31
versionName "4.0.1" versionName "4.0.1"
vectorDrawables.useSupportLibrary = true vectorDrawables.useSupportLibrary = true

View File

@@ -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 { fun isUpdatable(context: Context, packageName: String, versionCode: Long): Boolean {
return try { return try {
val packageInfo = getPackageInfo(context, packageName) val packageInfo = getPackageInfo(context, packageName)

View File

@@ -26,6 +26,7 @@ import android.view.ViewGroup
import com.aurora.extensions.isMIUI import com.aurora.extensions.isMIUI
import com.aurora.extensions.isMiuiOptimizationDisabled import com.aurora.extensions.isMiuiOptimizationDisabled
import com.aurora.extensions.showDialog import com.aurora.extensions.showDialog
import com.aurora.store.BuildConfig
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.installer.ServiceInstaller import com.aurora.store.data.installer.ServiceInstaller
import com.aurora.store.data.model.Installer import com.aurora.store.data.model.Installer
@@ -154,9 +155,18 @@ class InstallerFragment : BaseFragment() {
} }
private fun checkServicesAvailability(): Boolean { private fun checkServicesAvailability(): Boolean {
return PackageUtil.isInstalled( val isInstalled = PackageUtil.isInstalled(
requireContext(), requireContext(),
ServiceInstaller.PRIVILEGED_EXTENSION_PACKAGE_NAME 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
} }
} }

View File

@@ -37,7 +37,6 @@ import com.aurora.extensions.toast
import com.aurora.store.BuildConfig import com.aurora.store.BuildConfig
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.model.Permission import com.aurora.store.data.model.Permission
import com.aurora.store.databinding.FragmentOnboardingInstallerBinding
import com.aurora.store.databinding.FragmentOnboardingPermissionsBinding import com.aurora.store.databinding.FragmentOnboardingPermissionsBinding
import com.aurora.store.view.epoxy.views.preference.PermissionViewModel_ import com.aurora.store.view.epoxy.views.preference.PermissionViewModel_
import com.aurora.store.view.ui.commons.BaseFragment import com.aurora.store.view.ui.commons.BaseFragment
@@ -104,8 +103,8 @@ class PermissionsFragment : BaseFragment() {
requireContext(), requireContext(),
Manifest.permission.WRITE_EXTERNAL_STORAGE Manifest.permission.WRITE_EXTERNAL_STORAGE
) == PackageManager.PERMISSION_GRANTED ) == PackageManager.PERMISSION_GRANTED
1 -> isRAndAbove() && Environment.isExternalStorageManager() 1 -> if (isRAndAbove()) Environment.isExternalStorageManager() else true
2 -> isOAndAbove() && requireContext().packageManager.canRequestPackageInstalls() 2 -> if (isOAndAbove()) requireContext().packageManager.canRequestPackageInstalls() else true
else -> false else -> false
} }
) )

View File

@@ -26,6 +26,7 @@ import androidx.preference.PreferenceFragmentCompat
import com.aurora.extensions.runOnUiThread import com.aurora.extensions.runOnUiThread
import com.aurora.extensions.showDialog import com.aurora.extensions.showDialog
import com.aurora.extensions.toast import com.aurora.extensions.toast
import com.aurora.store.BuildConfig
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.installer.ServiceInstaller import com.aurora.store.data.installer.ServiceInstaller
import com.aurora.store.util.CommonUtil import com.aurora.store.util.CommonUtil
@@ -100,9 +101,18 @@ class InstallationPreference : PreferenceFragmentCompat() {
} }
private fun checkServicesAvailability(): Boolean { private fun checkServicesAvailability(): Boolean {
return PackageUtil.isInstalled( val isInstalled = PackageUtil.isInstalled(
requireContext(), requireContext(),
ServiceInstaller.PRIVILEGED_EXTENSION_PACKAGE_NAME 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
} }
} }

View File

@@ -214,7 +214,7 @@
<string name="installer_root_available">"Root access available"</string> <string name="installer_root_available">"Root access available"</string>
<string name="installer_root_unavailable">"No Root, grant root access or change the installer."</string> <string name="installer_root_unavailable">"No Root, grant root access or change the installer."</string>
<string name="installer_service_available">"Aurora services is available and ready to install."</string> <string name="installer_service_available">"Aurora services is available and ready to install."</string>
<string name="installer_service_unavailable">"Aurora services not installed, kindly install it or change installer"</string> <string name="installer_service_unavailable">"Aurora services is either not installed or version is incorrect (required >= 1.0.9), kindly install it or change installer"</string>
<string name="installer_service_misconfigured">"Aurora services not configured. Make sure service is enabled &amp; all permissions are granted"</string> <string name="installer_service_misconfigured">"Aurora services not configured. Make sure service is enabled &amp; all permissions are granted"</string>
<string name="installer_status_failure">"Installation failed"</string> <string name="installer_status_failure">"Installation failed"</string>
<string name="installer_status_failure_aborted">"Installation cancelled"</string> <string name="installer_status_failure_aborted">"Installation cancelled"</string>