From 894e7a629f0ae8f77bb2feece8d8cd1abfb90703 Mon Sep 17 00:00:00 2001 From: Rahul Patel Date: Thu, 25 Jul 2024 01:22:32 +0530 Subject: [PATCH] Add a safeguard to ESM/ESA access prompt --- .../main/java/com/aurora/store/util/PackageUtil.kt | 14 +++++++++----- .../store/view/ui/details/AppDetailsFragment.kt | 8 +++++--- .../view/ui/onboarding/PermissionsFragment.kt | 9 ++++++--- .../store/view/ui/updates/UpdatesFragment.kt | 9 ++++++--- 4 files changed, 26 insertions(+), 14 deletions(-) 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 0dfb0cb45..255afbf64 100644 --- a/app/src/main/java/com/aurora/store/util/PackageUtil.kt +++ b/app/src/main/java/com/aurora/store/util/PackageUtil.kt @@ -124,11 +124,15 @@ object PackageUtil { } @RequiresApi(Build.VERSION_CODES.R) - fun getStorageManagerIntent(): Intent { - return Intent( - Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION, - Uri.parse("package:${BuildConfig.APPLICATION_ID}") - ) + fun getStorageManagerIntent(safe: Boolean = false): Intent { + return if (safe) { + Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION) + } else { + Intent( + Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION, + Uri.parse("package:${BuildConfig.APPLICATION_ID}") + ) + } } @Throws(Exception::class) 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 71f66665e..71119408f 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 @@ -562,9 +562,11 @@ class AppDetailsFragment : BaseFragment() { if (PathUtil.needsStorageManagerPerm(app.fileList)) { if (isRAndAbove()) { if (!Environment.isExternalStorageManager()) { - startForStorageManagerResult.launch( - PackageUtil.getStorageManagerIntent() - ) + try { + startForStorageManagerResult.launch(PackageUtil.getStorageManagerIntent()) + } catch (_: ActivityNotFoundException) { + startForStorageManagerResult.launch(PackageUtil.getStorageManagerIntent(true)) + } } else { viewModel.download(app) } 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 b0e29655e..0f7408d59 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 @@ -21,6 +21,7 @@ package com.aurora.store.view.ui.onboarding import android.Manifest +import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent import android.content.pm.PackageManager @@ -216,9 +217,11 @@ class PermissionsFragment : BaseFragment() private fun requestStorageManagerPermission() { if (isRAndAbove()) { if (canInstallPackages()) { - startForStorageManagerResult.launch( - PackageUtil.getStorageManagerIntent() - ) + try { + startForStorageManagerResult.launch(PackageUtil.getStorageManagerIntent()) + } catch (_: ActivityNotFoundException) { + startForStorageManagerResult.launch(PackageUtil.getStorageManagerIntent(true)) + } } else { toast(R.string.toast_permission_installer_required) } diff --git a/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt b/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt index feca559ef..1bb7be17a 100644 --- a/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt @@ -20,6 +20,7 @@ package com.aurora.store.view.ui.updates import android.Manifest +import android.content.ActivityNotFoundException import android.content.pm.PackageManager import android.os.Bundle import android.os.Environment @@ -205,9 +206,11 @@ class UpdatesFragment : BaseFragment() { if (PathUtil.needsStorageManagerPerm(update.fileList)) { if (isRAndAbove()) { if (!Environment.isExternalStorageManager()) { - startForStorageManagerResult.launch( - PackageUtil.getStorageManagerIntent() - ) + try { + startForStorageManagerResult.launch(PackageUtil.getStorageManagerIntent()) + } catch (_: ActivityNotFoundException) { + startForStorageManagerResult.launch(PackageUtil.getStorageManagerIntent(true)) + } } else { viewModel.download(update) }