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.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()) {

View File

@@ -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)

View File

@@ -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())
)
}
}

View File

@@ -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)