Laxing on the all files permission for a11

The permission will now show only once, aside from trying to download manga or trying to read local manga

close 
This commit is contained in:
Jays2Kings 2021-07-10 15:11:39 -04:00
parent 70fc7c3b3b
commit 2ac761729d
8 changed files with 20 additions and 7 deletions

@ -16,6 +16,8 @@ object PreferenceKeys {
const val backToStart = "back_to_start"
const val deniedA11FilePermission = "denied_a11_file_permission"
const val rotation = "pref_rotation_type_key"
const val enableTransitions = "pref_enable_transitions_key"

@ -106,6 +106,8 @@ class PreferencesHelper(val context: Context) {
fun startingTab() = flowPrefs.getInt(Keys.startingTab, 0)
fun backReturnsToStart() = flowPrefs.getBoolean(Keys.backToStart, true)
fun hasDeniedA11FilePermission() = flowPrefs.getBoolean(Keys.deniedA11FilePermission, false)
fun clear() = prefs.edit().clear().apply()
fun oldTheme() = prefs.getInt(Keys.theme, 5)

@ -214,7 +214,7 @@ class MangaDetailsController :
presenter.onCreate()
binding.swipeRefresh.isRefreshing = presenter.isLoading
binding.swipeRefresh.setOnRefreshListener { presenter.refreshAll() }
requestFilePermissionsSafe(301)
requestFilePermissionsSafe(301, presenter.preferences, presenter.manga.isLocal())
}
/** Check if device is tablet, and use a second recycler to hold the details header if so */

@ -367,7 +367,7 @@ class RecentsController(bundle: Bundle? = null) :
binding.downloadBottomSheet.dlBottomSheet.sheetBehavior?.expand()
}
setPadding(binding.downloadBottomSheet.dlBottomSheet.sheetBehavior?.isHideable == true)
requestFilePermissionsSafe(301)
requestFilePermissionsSafe(301, presenter.preferences)
}
fun updateTitleAndMenu() {

@ -42,7 +42,7 @@ class SettingsBackupController : SettingsController() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
requestFilePermissionsSafe(500)
requestFilePermissionsSafe(500, preferences)
}
override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply {

@ -160,7 +160,7 @@ class BrowseController :
updateTitleAndMenu()
}
requestFilePermissionsSafe(301)
requestFilePermissionsSafe(301, preferences)
binding.bottomSheet.root.onCreate(this)
binding.shadow.alpha =

@ -38,6 +38,7 @@ import eu.kanade.tachiyomi.util.system.dpToPx
import eu.kanade.tachiyomi.util.system.openInBrowser
import eu.kanade.tachiyomi.util.view.applyBottomAnimatedInsets
import eu.kanade.tachiyomi.util.view.inflate
import eu.kanade.tachiyomi.util.view.requestFilePermissionsSafe
import eu.kanade.tachiyomi.util.view.scrollViewWith
import eu.kanade.tachiyomi.util.view.setOnQueryTextChangeListener
import eu.kanade.tachiyomi.util.view.snack
@ -131,6 +132,7 @@ open class BrowseSourceController(bundle: Bundle) :
binding.fab.isVisible = presenter.sourceFilters.isNotEmpty()
binding.fab.setOnClickListener { showFilters() }
binding.progress.isVisible = true
requestFilePermissionsSafe(301, preferences, presenter.source is LocalSource)
}
override fun onDestroyView(view: View) {

@ -492,7 +492,11 @@ fun Controller.requestPermissionsSafe(permissions: Array<String>, requestCode: I
}
}
fun Controller.requestFilePermissionsSafe(requestCode: Int) {
fun Controller.requestFilePermissionsSafe(
requestCode: Int,
preferences: PreferencesHelper,
showA11PermissionAnyway: Boolean = false
) {
val activity = activity ?: return
val permissions = mutableListOf(Manifest.permission.WRITE_EXTERNAL_STORAGE)
permissions.forEach { permission ->
@ -504,9 +508,12 @@ fun Controller.requestFilePermissionsSafe(requestCode: Int) {
requestPermissions(arrayOf(permission), requestCode)
}
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R &&
!Environment.isExternalStorageManager()
if (
Build.VERSION.SDK_INT >= Build.VERSION_CODES.R &&
!Environment.isExternalStorageManager() &&
(!preferences.hasDeniedA11FilePermission().get() || showA11PermissionAnyway)
) {
preferences.hasDeniedA11FilePermission().set(true)
MaterialDialog(activity)
.title(R.string.all_files_permission_required)
.message(R.string.external_storage_permission_notice)