From 45f8b39ded26738c6cddbb7d7d3f8f5121643865 Mon Sep 17 00:00:00 2001 From: MohitMali Date: Sat, 14 May 2022 10:42:46 +0530 Subject: [PATCH] Changes after review --- .../library/OnlineLibraryFragment.kt | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/OnlineLibraryFragment.kt b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/OnlineLibraryFragment.kt index e93ca1142..6b1e20fdb 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/OnlineLibraryFragment.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/OnlineLibraryFragment.kt @@ -25,6 +25,7 @@ import android.app.Activity import android.content.Intent import android.content.pm.PackageManager.PERMISSION_GRANTED import android.net.ConnectivityManager +import android.net.Uri import android.os.Build import android.os.Bundle import android.provider.Settings @@ -318,12 +319,24 @@ class OnlineLibraryFragment : BaseFragment(), FragmentActivityExtensions { ::requestExternalStoragePermission ) } else { - requestExternalStoragePermission() + alertDialogShower.show( + KiwixDialog.WriteStoragePermissionRationale, + ::openAppSettings + ) } } } } + private fun openAppSettings() { + val uri: Uri = Uri.fromParts("package", requireActivity().packageName, null) + val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply { + flags = Intent.FLAG_ACTIVITY_NEW_TASK + data = uri + } + startActivity(intent) + } + private fun requestExternalStoragePermission() { ActivityCompat.requestPermissions( requireActivity(), arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), @@ -342,9 +355,11 @@ class OnlineLibraryFragment : BaseFragment(), FragmentActivityExtensions { super.onRequestPermissionsResult(requestCode, permissions, grantResults) if (requestCode == REQUEST_STORAGE_PERMISSION && grantResults.isNotEmpty() && - grantResults[0] != PERMISSION_GRANTED + permissions[0] == Manifest.permission.WRITE_EXTERNAL_STORAGE ) { - checkExternalStorageWritePermission() + if (grantResults[0] != PERMISSION_GRANTED) { + checkExternalStorageWritePermission() + } } }