From 7d25f4a3ed2f8d33369fd373ab76e84f633fd7f0 Mon Sep 17 00:00:00 2001 From: Rahul Patel Date: Thu, 28 Nov 2024 20:42:35 +0530 Subject: [PATCH] Simplify permission request strategy --- .../store/data/providers/PermissionProvider.kt | 8 ++++---- .../java/com/aurora/store/util/PackageUtil.kt | 10 +++++++++- .../main/java/com/aurora/store/util/PathUtil.kt | 14 +++++++------- .../store/view/ui/details/AppDetailsFragment.kt | 16 +++------------- 4 files changed, 23 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/com/aurora/store/data/providers/PermissionProvider.kt b/app/src/main/java/com/aurora/store/data/providers/PermissionProvider.kt index 75e50d478..cd228e646 100644 --- a/app/src/main/java/com/aurora/store/data/providers/PermissionProvider.kt +++ b/app/src/main/java/com/aurora/store/data/providers/PermissionProvider.kt @@ -62,9 +62,9 @@ class PermissionProvider(private val fragment: Fragment) : } PermissionType.POST_NOTIFICATIONS -> { - if (isTAndAbove) { - permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) - } + if (isTAndAbove) { + permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) + } } else -> { @@ -93,7 +93,7 @@ class PermissionProvider(private val fragment: Fragment) : return when (permissionType) { PermissionType.EXTERNAL_STORAGE, PermissionType.STORAGE_MANAGER -> { - context.isExternalStorageAccessible() && PathUtil.canReadWriteOBB() + context.isExternalStorageAccessible() && PathUtil.canReadWriteOBB(context) } PermissionType.INSTALL_UNKNOWN_APPS -> PackageUtil.canRequestPackageInstalls(context) 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 9fbb3df84..540f06b23 100644 --- a/app/src/main/java/com/aurora/store/util/PackageUtil.kt +++ b/app/src/main/java/com/aurora/store/util/PackageUtil.kt @@ -34,6 +34,7 @@ import android.util.Log import androidx.annotation.RequiresApi import androidx.core.content.pm.PackageInfoCompat import androidx.core.graphics.drawable.toBitmap +import com.aurora.extensions.isHuawei import com.aurora.extensions.isOAndAbove import com.aurora.extensions.isPAndAbove import com.aurora.extensions.isTAndAbove @@ -139,11 +140,18 @@ object PackageUtil { @RequiresApi(Build.VERSION_CODES.R) fun getStorageManagerIntent(context: Context): Intent { - val intent = Intent( + var intent = Intent( Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION, Uri.parse("package:${BuildConfig.APPLICATION_ID}") ) + if (isHuawei) { + intent = Intent( + Settings.ACTION_APPLICATION_DETAILS_SETTINGS, + Uri.parse("package:${BuildConfig.APPLICATION_ID}") + ) + } + // Check if the intent can be resolved val packageManager = context.packageManager val isIntentAvailable = packageManager.queryIntentActivities( diff --git a/app/src/main/java/com/aurora/store/util/PathUtil.kt b/app/src/main/java/com/aurora/store/util/PathUtil.kt index 3783c7d3a..948073b30 100644 --- a/app/src/main/java/com/aurora/store/util/PathUtil.kt +++ b/app/src/main/java/com/aurora/store/util/PathUtil.kt @@ -106,14 +106,14 @@ object PathUtil { return file } - fun canReadWriteOBB(): Boolean { - return canReadWriteDir( - Environment.getExternalStorageDirectory().toString() + "/Android/obb/" - ) - } + fun canReadWriteOBB(context: Context): Boolean { + val obbDir = context.obbDir.parentFile - private fun canReadWriteDir(dir: String): Boolean { - return File(dir).let { it.exists() && it.canRead() && it.canWrite() } + if (obbDir != null) { + return obbDir.exists() && obbDir.canRead() && obbDir.canWrite() + } + + return false } } diff --git a/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt index 897f1ba5f..7a2b96c83 100644 --- a/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt @@ -573,7 +573,7 @@ class AppDetailsFragment : BaseFragment() { viewModel.download(app) } else { permissionProvider.request(PermissionType.STORAGE_MANAGER) { - if (it) viewModel.download(app) + if (it) viewModel.download(app) else flip(0) } } } else { @@ -665,18 +665,8 @@ class AppDetailsFragment : BaseFragment() { } else if (app.versionCode == 0) { toast(R.string.toast_app_unavailable) } else { - if (app.fileList.requiresObbDir() && permissionProvider.isGranted( - PermissionType.STORAGE_MANAGER)) { - permissionProvider.request(PermissionType.STORAGE_MANAGER) { - if (it) { - btn.setText(R.string.download_metadata) - startDownload() - } - } - } else { - btn.setText(R.string.download_metadata) - startDownload() - } + btn.setText(R.string.download_metadata) + startDownload() } }