From 775a3824a81d3538e4650d45189dea6a8e7ded23 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 31 Jan 2025 18:37:28 -0800 Subject: [PATCH] All Files Access --- res/values/strings.xml | 3 +++ res/xml/preferences.xml | 5 +++++ src/PrefsAct.scala | 30 ++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/res/values/strings.xml b/res/values/strings.xml index 4e97d0d..8e47b9b 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -354,6 +354,9 @@ Choose map file Error loading map file %s! +Grant Storage Permissions +Tap to manage permissions for all files access. + Theme file name MapsForge rendering theme (XML) Choose theme file diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index 2f2fff0..09cb466 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -224,6 +224,11 @@ android:title="@string/p_themefile" android:summary="@string/p_themefile_summary" /> + + diff --git a/src/PrefsAct.scala b/src/PrefsAct.scala index d1ddf6c..9ff7047 100644 --- a/src/PrefsAct.scala +++ b/src/PrefsAct.scala @@ -12,6 +12,7 @@ import _root_.android.widget.Toast import java.text.SimpleDateFormat import java.io.{File, PrintWriter} import java.util.Date +import android.provider.Settings import org.json.JSONObject @@ -50,6 +51,16 @@ class PrefsAct extends PreferenceActivity { override def onCreate(savedInstanceState: Bundle) { super.onCreate(savedInstanceState) addPreferencesFromResource(R.xml.preferences) + // Set the click listener for the "Manage All Files Access" preference + val allFilesAccessPref = findPreference("all_files_access") + if (allFilesAccessPref != null) { + allFilesAccessPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { + def onPreferenceClick(preference: Preference) = { + openAllFilesAccessSettings() // Call the method to handle the access settings + true // Return true to indicate the click was handled + } + }) + } fileChooserPreference("mapfile", 123456, R.string.p_mapfile_choose) fileChooserPreference("themefile", 123457, R.string.p_themefile_choose) } @@ -157,4 +168,23 @@ class PrefsAct extends PreferenceActivity { case _ => super.onOptionsItemSelected(mi) } } + + def openAllFilesAccessSettings(): Unit = { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + // For Android 13+ (API 33 and above): open All Files Access settings + val intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION) + intent.setData(Uri.parse("package:" + getPackageName())) + startActivity(intent) + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + // For Android 11 (API 30) and above but below Android 13, open App Info page directly + val intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) + intent.setData(Uri.parse("package:" + getPackageName())) + startActivity(intent) + } else { + // For older versions (Android 10 and below), open the App Info page + val intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) + intent.setData(Uri.parse("package:" + getPackageName())) + startActivity(intent) + } + } }