From 406485680301be4b826a2dad904078880580bae7 Mon Sep 17 00:00:00 2001 From: MohitMali Date: Fri, 1 Apr 2022 17:49:43 +0530 Subject: [PATCH] #2791 --- app/src/main/AndroidManifest.xml | 10 +++++--- .../library/LocalLibraryFragment.kt | 1 + .../settings/KiwixPrefsFragment.kt | 23 ++++++++++++++----- .../kiwixmobile/core/main/AddNoteDialog.kt | 5 ++-- 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a68032508..97d167675 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -6,7 +6,8 @@ - + @@ -22,6 +23,7 @@ android:allowBackup="true" android:extractNativeLibs="false" android:icon="@mipmap/ic_launcher" + android:requestLegacyExternalStorage="true" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" tools:targetApi="m"> @@ -32,7 +34,8 @@ android:label="@string/app_name" android:launchMode="singleTop" android:theme="@style/KiwixTheme.Launcher" - android:windowSoftInputMode="adjustPan"> + android:windowSoftInputMode="adjustPan" + android:exported="true"> @@ -145,7 +148,8 @@ - + diff --git a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryFragment.kt b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryFragment.kt index e97562289..45af310d3 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryFragment.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryFragment.kt @@ -214,6 +214,7 @@ class LocalLibraryFragment : BaseFragment() { // We already have permission!! requestFileSystemCheck() } else { + sharedPreferenceUtil.manageExternalFilesPermissionDialog = false if (sharedPreferenceUtil.manageExternalFilesPermissionDialog) { // We should only ask for first time, If the users wants to revoke settings // then they can directly toggle this feature from settings screen diff --git a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixPrefsFragment.kt b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixPrefsFragment.kt index 948466170..d9e09252e 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixPrefsFragment.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixPrefsFragment.kt @@ -18,16 +18,16 @@ package org.kiwix.kiwixmobile.settings +import android.Manifest +import android.content.pm.PackageManager import android.os.Build import android.os.Bundle -import android.os.Environment import androidx.core.content.ContextCompat -import androidx.fragment.app.FragmentActivity import androidx.preference.Preference import androidx.preference.PreferenceCategory import org.kiwix.kiwixmobile.R -import org.kiwix.kiwixmobile.core.navigateToSettings import org.kiwix.kiwixmobile.core.settings.CorePrefsFragment +import org.kiwix.kiwixmobile.core.utils.REQUEST_STORAGE_PERMISSION import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil.Companion.PREF_STORAGE @@ -54,15 +54,26 @@ class KiwixPrefsFragment : CorePrefsFragment() { val permissionPref = findPreference(PREF_MANAGE_EXTERNAL_STORAGE_PERMISSION) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { showPermissionPreference() - val externalStorageManager = Environment.isExternalStorageManager() - if (externalStorageManager) { + + val isPermission = ContextCompat.checkSelfPermission( + requireActivity(), + Manifest.permission.READ_EXTERNAL_STORAGE + ) == PackageManager.PERMISSION_GRANTED + + if (isPermission) { permissionPref!!.setSummary(org.kiwix.kiwixmobile.core.R.string.allowed) } else { permissionPref!!.setSummary(org.kiwix.kiwixmobile.core.R.string.not_allowed) } permissionPref.onPreferenceClickListener = Preference.OnPreferenceClickListener { - activity?.let(FragmentActivity::navigateToSettings) + if (!isPermission) { + requestPermissions( + arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), + REQUEST_STORAGE_PERMISSION + ) + } + // activity?.let(FragmentActivity::navigateToSettings) true } } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/AddNoteDialog.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/main/AddNoteDialog.kt index 29cb8cb03..9f91dc3d4 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/AddNoteDialog.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/AddNoteDialog.kt @@ -18,6 +18,7 @@ package org.kiwix.kiwixmobile.core.main import android.Manifest +import android.annotation.SuppressLint import android.app.Dialog import android.content.Context import android.content.Intent @@ -25,7 +26,6 @@ import android.content.pm.PackageManager import android.net.Uri import android.os.Build import android.os.Bundle -import android.os.Environment import android.util.Log import android.view.LayoutInflater import android.view.MenuItem @@ -346,6 +346,7 @@ class AddNoteDialog : DialogFragment() { enableDeleteNoteMenuItem() } + @SuppressLint("QueryPermissionsNeeded") private fun shareNote() { /* The note text file corresponding to the currently open article, given at: @@ -399,7 +400,7 @@ class AddNoteDialog : DialogFragment() { companion object { @JvmField val NOTES_DIRECTORY = - Environment.getExternalStorageDirectory().toString() + "/Kiwix/Notes/" + instance.getExternalFilesDir("").toString() + "/Kiwix/Notes/" const val TAG = "AddNoteDialog" } }