From d85d813d62b016160232953790aa69be29ad247e Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Wed, 25 Mar 2026 00:50:47 +0500 Subject: [PATCH] android: add a proper exit from storage permission dialog --- .../su/xash/engine/ui/library/LibraryFragment.kt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/android/app/src/main/java/su/xash/engine/ui/library/LibraryFragment.kt b/android/app/src/main/java/su/xash/engine/ui/library/LibraryFragment.kt index f1b2312b..5082ce2f 100644 --- a/android/app/src/main/java/su/xash/engine/ui/library/LibraryFragment.kt +++ b/android/app/src/main/java/su/xash/engine/ui/library/LibraryFragment.kt @@ -60,22 +60,26 @@ class LibraryFragment : Fragment(), MenuProvider { private fun checkStoragePermissions(): Boolean { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - if (!Environment.isExternalStorageManager()) + if (!Environment.isExternalStorageManager()) { MaterialAlertDialogBuilder(requireContext()).apply { setTitle(R.string.file_access_required) setMessage(R.string.file_access_message) - setPositiveButton(android.R.string.ok) { _, _ -> + setPositiveButton(R.string.open_settings) { _, _ -> startActivityForResult.launch( Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION).setData( Uri.fromParts("package", BuildConfig.APPLICATION_ID, null) ) ) } + setNeutralButton(R.string.done_check_permissions) { dialog, _ -> + checkStoragePermissions() + } setCancelable(false) show() return false - } else { + } + } else { return true } } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { @@ -94,7 +98,7 @@ class LibraryFragment : Fragment(), MenuProvider { MaterialAlertDialogBuilder(requireContext()).apply { setTitle(R.string.external_storage_required) setMessage(R.string.external_storage_message) - setPositiveButton(android.R.string.ok) { _, _ -> + setPositiveButton(R.string.open_settings) { _, _ -> if (showRationale) { requestPermissionLauncher.launch(permissionsNeeded) } else { @@ -106,6 +110,9 @@ class LibraryFragment : Fragment(), MenuProvider { startActivity(intent) } } + setNeutralButton(R.string.done_check_permissions) { _, _ -> + checkStoragePermissions() + } setCancelable(false) show() }