AppDetails: Make install app permission check a must before requesting an install
This commit is contained in:
@@ -20,7 +20,6 @@ import com.aurora.extensions.checkManifestPermission
|
||||
import com.aurora.extensions.isDomainVerified
|
||||
import com.aurora.extensions.isExternalStorageAccessible
|
||||
import com.aurora.extensions.isMAndAbove
|
||||
import com.aurora.extensions.isOAndAbove
|
||||
import com.aurora.extensions.toast
|
||||
import com.aurora.store.BuildConfig
|
||||
import com.aurora.store.PermissionCallback
|
||||
@@ -77,10 +76,7 @@ class PermissionProvider : ActivityResultCallback<ActivityResult> {
|
||||
private fun knownPermissions(): Map<PermissionType, Intent> {
|
||||
return mapOf(
|
||||
PermissionType.STORAGE_MANAGER to PackageUtil.getStorageManagerIntent(context),
|
||||
PermissionType.INSTALL_UNKNOWN_APPS to Intent(
|
||||
Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES,
|
||||
Uri.parse("package:${BuildConfig.APPLICATION_ID}")
|
||||
),
|
||||
PermissionType.INSTALL_UNKNOWN_APPS to PackageUtil.getInstallUnknownAppsIntent(),
|
||||
PermissionType.DOZE_WHITELIST to Intent(
|
||||
Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,
|
||||
Uri.parse("package:${BuildConfig.APPLICATION_ID}")
|
||||
@@ -122,14 +118,7 @@ class PermissionProvider : ActivityResultCallback<ActivityResult> {
|
||||
PermissionType.STORAGE_MANAGER -> context.isExternalStorageAccessible()
|
||||
|
||||
PermissionType.POST_NOTIFICATIONS -> context.checkManifestPermission(Manifest.permission.POST_NOTIFICATIONS)
|
||||
PermissionType.INSTALL_UNKNOWN_APPS -> {
|
||||
if (isOAndAbove()) {
|
||||
context.packageManager.canRequestPackageInstalls()
|
||||
} else {
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
PermissionType.INSTALL_UNKNOWN_APPS -> PackageUtil.canRequestPackageInstalls(context)
|
||||
PermissionType.DOZE_WHITELIST -> {
|
||||
if (isMAndAbove()) {
|
||||
val powerManager =
|
||||
|
||||
@@ -144,6 +144,30 @@ object PackageUtil {
|
||||
}
|
||||
}
|
||||
|
||||
fun getInstallUnknownAppsIntent(): Intent {
|
||||
return if (isOAndAbove()) {
|
||||
Intent(
|
||||
Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES,
|
||||
Uri.parse("package:${BuildConfig.APPLICATION_ID}")
|
||||
)
|
||||
} else {
|
||||
Intent(Settings.ACTION_SECURITY_SETTINGS)
|
||||
}
|
||||
}
|
||||
|
||||
fun canRequestPackageInstalls(context: Context): Boolean {
|
||||
return if (isOAndAbove()) {
|
||||
context.packageManager.canRequestPackageInstalls()
|
||||
} else {
|
||||
val secureResult = Settings.Secure.getInt(
|
||||
context.contentResolver,
|
||||
Settings.Secure.INSTALL_NON_MARKET_APPS, 0
|
||||
)
|
||||
|
||||
return secureResult == 1
|
||||
}
|
||||
}
|
||||
|
||||
@Throws(Exception::class)
|
||||
fun getPackageInfo(context: Context, packageName: String, flags: Int = 0): PackageInfo {
|
||||
return if (isTAndAbove()) {
|
||||
|
||||
@@ -632,7 +632,9 @@ class AppDetailsFragment : BaseFragment<FragmentDetailsBinding>() {
|
||||
}
|
||||
|
||||
btn.addOnClickListener {
|
||||
if (authProvider.isAnonymous && !app.isFree) {
|
||||
if (!permissionProvider.isGranted(PermissionType.INSTALL_UNKNOWN_APPS)) {
|
||||
permissionProvider.request(PermissionType.INSTALL_UNKNOWN_APPS)
|
||||
} else if (authProvider.isAnonymous && !app.isFree) {
|
||||
toast(R.string.toast_purchase_blocked)
|
||||
} else if (app.versionCode == 0) {
|
||||
toast(R.string.toast_app_unavailable)
|
||||
@@ -641,6 +643,7 @@ class AppDetailsFragment : BaseFragment<FragmentDetailsBinding>() {
|
||||
startDownload()
|
||||
}
|
||||
}
|
||||
|
||||
if (uninstallActionEnabled) {
|
||||
binding.layoutDetailsToolbar.toolbar.invalidateMenu()
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ package com.aurora.store.view.ui.onboarding
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import com.aurora.extensions.isMAndAbove
|
||||
import com.aurora.extensions.isOAndAbove
|
||||
import com.aurora.extensions.isRAndAbove
|
||||
import com.aurora.extensions.isSAndAbove
|
||||
import com.aurora.extensions.isTAndAbove
|
||||
@@ -65,7 +66,11 @@ class PermissionsFragment : BaseFragment<FragmentOnboardingPermissionsBinding>()
|
||||
Permission(
|
||||
PermissionType.INSTALL_UNKNOWN_APPS,
|
||||
getString(R.string.onboarding_permission_installer),
|
||||
getString(R.string.onboarding_permission_installer_desc)
|
||||
if (isOAndAbove()) {
|
||||
getString(R.string.onboarding_permission_installer_desc)
|
||||
} else {
|
||||
getString(R.string.onboarding_permission_installer_legacy_desc)
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -198,6 +198,7 @@
|
||||
<string name="onboarding_permission_esm">"External Storage Manager"</string>
|
||||
<string name="onboarding_permission_installer">"Installer Permission"</string>
|
||||
<string name="onboarding_permission_installer_desc">"Allow installing apps from Aurora Store"</string>
|
||||
<string name="onboarding_permission_installer_legacy_desc">"Allow installation of apps from unknown sources"</string>
|
||||
<string name="onboarding_permission_notifications">"Notifications"</string>
|
||||
<string name="onboarding_permission_notifications_desc">"Send notifications regarding installations status"</string>
|
||||
<string name="onboarding_permission_doze">"Background Downloads"</string>
|
||||
|
||||
Reference in New Issue
Block a user