Skip to content
This repository was archived by the owner on Mar 15, 2025. It is now read-only.

Commit f1d6f1c

Browse files
committed
Map picker workaround for private folder
1 parent 7dd5262 commit f1d6f1c

File tree

4 files changed

+58
-3
lines changed

4 files changed

+58
-3
lines changed

src/main/java/menion/android/whereyougo/maps/mapsforge/filepicker/FilePicker.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ public class FilePicker extends Activity implements AdapterView.OnItemClickListe
5555
*/
5656
public static final String SELECTED_FILE = "selectedFile";
5757

58-
private static final String CURRENT_DIRECTORY = "currentDirectory";
58+
public static final String CURRENT_DIRECTORY = "currentDirectory";
5959
private static final String DEFAULT_DIRECTORY = "/";
6060
private static final int DIALOG_FILE_INVALID = 0;
6161
private static final int DIALOG_FILE_SELECT = 1;
62-
private static final String PREFERENCES_FILE = "FilePicker";
62+
public static final String PREFERENCES_FILE = "FilePicker";
6363
private static Comparator<File> fileComparator = getDefaultFileComparator();
6464
private static FileFilter fileDisplayFilter;
6565
private static ValidFileFilter fileSelectFilter;

src/main/java/menion/android/whereyougo/maps/mapsforge/preferences/EditPreferences.java

+36
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,16 @@
1515
package menion.android.whereyougo.maps.mapsforge.preferences;
1616

1717
import menion.android.whereyougo.R;
18+
import menion.android.whereyougo.maps.mapsforge.filepicker.FilePicker;
1819

20+
import android.app.AlertDialog;
21+
import android.content.SharedPreferences;
1922
import android.os.Bundle;
23+
import android.preference.Preference;
2024
import android.preference.PreferenceActivity;
2125
import android.preference.PreferenceManager;
2226
import android.view.WindowManager;
27+
import android.widget.Toast;
2328

2429
/**
2530
* Activity to edit the application preferences.
@@ -29,6 +34,37 @@ public class EditPreferences extends PreferenceActivity {
2934
protected void onCreate(Bundle savedInstanceState) {
3035
super.onCreate(savedInstanceState);
3136
addPreferencesFromResource(R.xml.mapsforge_preferences);
37+
38+
Preference resetCurrentDirectoryPrivate = findPreference("resetCurrentDirectoryPrivate");
39+
if (resetCurrentDirectoryPrivate != null) {
40+
resetCurrentDirectoryPrivate.setOnPreferenceClickListener(preference -> resetCurrentDirectory(true));
41+
}
42+
43+
Preference resetCurrentDirectoryRoot = findPreference("resetCurrentDirectoryRoot");
44+
if (resetCurrentDirectoryRoot != null) {
45+
resetCurrentDirectoryRoot.setOnPreferenceClickListener(preference -> resetCurrentDirectory(false));
46+
}
47+
48+
}
49+
50+
private boolean resetCurrentDirectory(final boolean toPrivateFolder) {
51+
new AlertDialog.Builder(this)
52+
.setTitle(R.string.reset_map_settings_confirmation_title)
53+
.setMessage(R.string.reset_map_settings_confirmation_message)
54+
.setPositiveButton(android.R.string.ok, ((dialogInterface, i) -> {
55+
SharedPreferences.Editor editor = getSharedPreferences(FilePicker.PREFERENCES_FILE, MODE_PRIVATE).edit();
56+
editor.putString(FilePicker.CURRENT_DIRECTORY, toPrivateFolder ? getExternalFilesDir(null).getAbsolutePath() : "/");
57+
editor.commit();
58+
59+
SharedPreferences.Editor editor2 = getSharedPreferences("MapActivity", MODE_PRIVATE).edit();
60+
editor2.remove("mapFile");
61+
editor2.commit();
62+
63+
Toast.makeText(this, R.string.reset_current_directory_info, Toast.LENGTH_SHORT).show();
64+
}))
65+
.setNegativeButton(android.R.string.cancel, (dialogInterface, i) -> {})
66+
.show();
67+
return true;
3268
}
3369

3470
@Override

src/main/res/values/strings_mapsforge.xml

+10
Original file line numberDiff line numberDiff line change
@@ -113,4 +113,14 @@
113113
<string name="receivemapfile_success">Mapfile set</string>
114114
<string name="receivemapfile_error">Error setting mapfile</string>
115115
<string name="receivemapfile_notset">No mapfile set in c:geo</string>
116+
117+
<!-- Reset map source (and default folder) settings -->
118+
<string name="reset_current_directory_private_title">Reset to private</string>
119+
<string name="reset_current_directory_private_summary">Reset current directory to private directory (use this on Android 11 or newer)</string>
120+
<string name="reset_current_directory_root_title">Reset to root</string>
121+
<string name="reset_current_directory_root_summary">Reset current directory to root directory (use this on Android 10 or older</string>
122+
<string name="reset_current_directory_info">Current directory reset</string>
123+
124+
<string name="reset_map_settings_confirmation_title">Reset map source settings</string>
125+
<string name="reset_map_settings_confirmation_message">This will reset your map source setting and your current map base folder.\n\nYou will need to restart WhereYouGo and select a new map source.</string>
116126
</resources>

src/main/res/xml/mapsforge_preferences.xml

+10-1
Original file line numberDiff line numberDiff line change
@@ -67,5 +67,14 @@
6767
android:key="highlightWaterTiles"
6868
android:summary="@string/preferences_show_water_tiles_desc"
6969
android:title="@string/preferences_show_water_tiles" />
70+
<Preference
71+
android:key="resetCurrentDirectoryPrivate"
72+
android:summary="@string/reset_current_directory_private_summary"
73+
android:title="@string/reset_current_directory_private_title" />
74+
<Preference
75+
android:key="resetCurrentDirectoryRoot"
76+
android:summary="@string/reset_current_directory_root_summary"
77+
android:title="@string/reset_current_directory_root_title" />
78+
7079
</PreferenceCategory>
71-
</PreferenceScreen>
80+
</PreferenceScreen>

0 commit comments

Comments
 (0)