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 e4c67bd67..0a59bcffc 100644 --- a/app/src/main/java/com/aurora/store/util/PackageUtil.kt +++ b/app/src/main/java/com/aurora/store/util/PackageUtil.kt @@ -27,12 +27,17 @@ import android.content.pm.PackageManager import android.content.pm.PackageManager.PackageInfoFlags import android.content.pm.SharedLibraryInfo import android.graphics.Bitmap +import android.net.Uri +import android.os.Build +import android.provider.Settings +import androidx.annotation.RequiresApi import androidx.core.content.pm.PackageInfoCompat import androidx.core.graphics.drawable.toBitmap import com.aurora.extensions.getInstallerPackageNameCompat import com.aurora.extensions.isOAndAbove import com.aurora.extensions.isPAndAbove import com.aurora.extensions.isTAndAbove +import com.aurora.store.BuildConfig object PackageUtil { @@ -117,6 +122,18 @@ object PackageUtil { } } + @RequiresApi(Build.VERSION_CODES.R) + fun getStorageManagerIntent(context: Context): Intent { + return if (isTv(context)) { + Intent( + Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION, + Uri.parse("package:${BuildConfig.APPLICATION_ID}") + ) + } else { + Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION) + } + } + @Throws(Exception::class) fun getPackageInfo(context: Context, packageName: String, flags: Int = 0): PackageInfo { return if (isTAndAbove()) { 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 f36b13822..6ddbb13bd 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 @@ -548,7 +548,7 @@ class AppDetailsFragment : BaseFragment(R.layout.fragment_details) { if (isRAndAbove()) { if (!Environment.isExternalStorageManager()) { startForStorageManagerResult.launch( - Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION) + PackageUtil.getStorageManagerIntent(requireContext()) ) } 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 35fa3094a..091f35bf7 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 @@ -41,6 +41,7 @@ import com.aurora.store.BuildConfig import com.aurora.store.R import com.aurora.store.data.model.Permission import com.aurora.store.databinding.FragmentOnboardingPermissionsBinding +import com.aurora.store.util.PackageUtil import com.aurora.store.util.isExternalStorageAccessible import com.aurora.store.view.epoxy.views.preference.PermissionViewModel_ import com.aurora.store.view.ui.commons.BaseFragment @@ -214,7 +215,7 @@ class PermissionsFragment : BaseFragment(R.layout.fragment_onboarding_permission private fun requestStorageManagerPermission() { if (isRAndAbove()) { startForStorageManagerResult.launch( - Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION) + PackageUtil.getStorageManagerIntent(requireContext()) ) } } 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 6693928e3..bb2b8c12f 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,11 +20,9 @@ package com.aurora.store.view.ui.updates import android.Manifest -import android.content.Intent import android.content.pm.PackageManager import android.os.Bundle import android.os.Environment -import android.provider.Settings import android.view.View import androidx.activity.result.contract.ActivityResultContracts import androidx.core.content.ContextCompat @@ -41,6 +39,7 @@ import com.aurora.store.R import com.aurora.store.data.event.BusEvent import com.aurora.store.data.room.download.Download import com.aurora.store.databinding.FragmentUpdatesBinding +import com.aurora.store.util.PackageUtil import com.aurora.store.util.PathUtil import com.aurora.store.view.epoxy.views.UpdateHeaderViewModel_ import com.aurora.store.view.epoxy.views.app.AppUpdateViewModel_ @@ -244,7 +243,7 @@ class UpdatesFragment : BaseFragment(R.layout.fragment_updates) { if (isRAndAbove()) { if (!Environment.isExternalStorageManager()) { startForStorageManagerResult.launch( - Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION) + PackageUtil.getStorageManagerIntent(requireContext()) ) } else { viewModel.download(app)