PermissionsFragment: Handle missing activity to grant storage manager perm on ATV

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2024-05-08 18:03:53 +05:30
parent 692cda2226
commit b5bde9d3a3
4 changed files with 22 additions and 5 deletions

View File

@@ -27,12 +27,17 @@ import android.content.pm.PackageManager
import android.content.pm.PackageManager.PackageInfoFlags import android.content.pm.PackageManager.PackageInfoFlags
import android.content.pm.SharedLibraryInfo import android.content.pm.SharedLibraryInfo
import android.graphics.Bitmap 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.content.pm.PackageInfoCompat
import androidx.core.graphics.drawable.toBitmap import androidx.core.graphics.drawable.toBitmap
import com.aurora.extensions.getInstallerPackageNameCompat import com.aurora.extensions.getInstallerPackageNameCompat
import com.aurora.extensions.isOAndAbove import com.aurora.extensions.isOAndAbove
import com.aurora.extensions.isPAndAbove import com.aurora.extensions.isPAndAbove
import com.aurora.extensions.isTAndAbove import com.aurora.extensions.isTAndAbove
import com.aurora.store.BuildConfig
object PackageUtil { 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) @Throws(Exception::class)
fun getPackageInfo(context: Context, packageName: String, flags: Int = 0): PackageInfo { fun getPackageInfo(context: Context, packageName: String, flags: Int = 0): PackageInfo {
return if (isTAndAbove()) { return if (isTAndAbove()) {

View File

@@ -548,7 +548,7 @@ class AppDetailsFragment : BaseFragment(R.layout.fragment_details) {
if (isRAndAbove()) { if (isRAndAbove()) {
if (!Environment.isExternalStorageManager()) { if (!Environment.isExternalStorageManager()) {
startForStorageManagerResult.launch( startForStorageManagerResult.launch(
Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION) PackageUtil.getStorageManagerIntent(requireContext())
) )
} else { } else {
viewModel.download(app) viewModel.download(app)

View File

@@ -41,6 +41,7 @@ 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.FragmentOnboardingPermissionsBinding import com.aurora.store.databinding.FragmentOnboardingPermissionsBinding
import com.aurora.store.util.PackageUtil
import com.aurora.store.util.isExternalStorageAccessible import com.aurora.store.util.isExternalStorageAccessible
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
@@ -214,7 +215,7 @@ class PermissionsFragment : BaseFragment(R.layout.fragment_onboarding_permission
private fun requestStorageManagerPermission() { private fun requestStorageManagerPermission() {
if (isRAndAbove()) { if (isRAndAbove()) {
startForStorageManagerResult.launch( startForStorageManagerResult.launch(
Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION) PackageUtil.getStorageManagerIntent(requireContext())
) )
} }
} }

View File

@@ -20,11 +20,9 @@
package com.aurora.store.view.ui.updates package com.aurora.store.view.ui.updates
import android.Manifest import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.os.Bundle import android.os.Bundle
import android.os.Environment import android.os.Environment
import android.provider.Settings
import android.view.View import android.view.View
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat 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.event.BusEvent
import com.aurora.store.data.room.download.Download import com.aurora.store.data.room.download.Download
import com.aurora.store.databinding.FragmentUpdatesBinding import com.aurora.store.databinding.FragmentUpdatesBinding
import com.aurora.store.util.PackageUtil
import com.aurora.store.util.PathUtil import com.aurora.store.util.PathUtil
import com.aurora.store.view.epoxy.views.UpdateHeaderViewModel_ import com.aurora.store.view.epoxy.views.UpdateHeaderViewModel_
import com.aurora.store.view.epoxy.views.app.AppUpdateViewModel_ import com.aurora.store.view.epoxy.views.app.AppUpdateViewModel_
@@ -244,7 +243,7 @@ class UpdatesFragment : BaseFragment(R.layout.fragment_updates) {
if (isRAndAbove()) { if (isRAndAbove()) {
if (!Environment.isExternalStorageManager()) { if (!Environment.isExternalStorageManager()) {
startForStorageManagerResult.launch( startForStorageManagerResult.launch(
Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION) PackageUtil.getStorageManagerIntent(requireContext())
) )
} else { } else {
viewModel.download(app) viewModel.download(app)