Skip to content

Commit 46f6c99

Browse files
authored
Merge pull request #1122 from PhenoApps/delete_storage_crashes
delete_storage_crashes
2 parents d7b20a9 + 12cfb2e commit 46f6c99

File tree

6 files changed

+58
-12
lines changed

6 files changed

+58
-12
lines changed

app/src/main/java/com/fieldbook/tracker/activities/ConfigActivity.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
import com.michaelflisar.changelog.internal.ChangelogDialogFragment;
5656

5757
import org.apache.commons.lang3.ArrayUtils;
58+
import org.phenoapps.utils.BaseDocumentTreeUtil;
5859

5960
import java.util.ArrayList;
6061
import java.util.HashSet;
@@ -318,7 +319,13 @@ private void loadScreen() {
318319
break;
319320
case 3:
320321
if (checkTraitsExist() < 0) return;
321-
exportUtil.exportActiveField();
322+
if (BaseDocumentTreeUtil.Companion.getRoot(this) != null
323+
&& BaseDocumentTreeUtil.Companion.isEnabled(this)
324+
&& BaseDocumentTreeUtil.Companion.getDirectory(this, R.string.dir_field_export) != null) {
325+
exportUtil.exportActiveField();
326+
} else {
327+
Toast.makeText(this, R.string.error_storage_directory, Toast.LENGTH_LONG).show();
328+
}
322329
break;
323330
case 4:
324331
intent.setClassName(ConfigActivity.this,

app/src/main/java/com/fieldbook/tracker/activities/FieldEditorActivity.java

+17-2
Original file line numberDiff line numberDiff line change
@@ -395,10 +395,14 @@ private void showFileDialog() {
395395
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
396396
switch (position) {
397397
case 0:
398-
loadLocalPermission();
398+
if (checkDirectory()) {
399+
loadLocalPermission();
400+
}
399401
break;
400402
case 1:
401-
loadCloud();
403+
if (checkDirectory()) {
404+
loadCloud();
405+
}
402406
break;
403407
case 2:
404408
FieldCreatorDialogFragment dialog = new FieldCreatorDialogFragment((ThemedActivity) FieldEditorActivity.this);
@@ -456,6 +460,17 @@ public void loadBrAPI() {
456460
}
457461
}
458462

463+
private Boolean checkDirectory() {
464+
if (BaseDocumentTreeUtil.Companion.getRoot(this) != null
465+
&& BaseDocumentTreeUtil.Companion.isEnabled(this)
466+
&& BaseDocumentTreeUtil.Companion.getDirectory(this, R.string.dir_field_import) != null) {
467+
return true;
468+
} else {
469+
Toast.makeText(this, R.string.error_storage_directory, Toast.LENGTH_LONG).show();
470+
return false;
471+
}
472+
}
473+
459474
public void loadCloud() {
460475
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
461476
intent.setType("*/*");

app/src/main/java/com/fieldbook/tracker/activities/TraitEditorActivity.java

+8-6
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import android.annotation.SuppressLint;
1010
import android.app.Activity;
1111
import android.app.AlertDialog;
12-
import android.app.DialogFragment;
1312
import android.content.Context;
1413
import android.content.DialogInterface;
1514
import android.content.Intent;
@@ -57,8 +56,6 @@
5756
import com.fieldbook.tracker.objects.ImportFormat;
5857
import com.fieldbook.tracker.objects.TraitObject;
5958
import com.fieldbook.tracker.preferences.GeneralKeys;
60-
import com.fieldbook.tracker.traits.formats.Formats;
61-
import com.fieldbook.tracker.utilities.ArrayIndexComparator;
6259
import com.fieldbook.tracker.utilities.CSVWriter;
6360
import com.fieldbook.tracker.utilities.FileUtil;
6461
import com.fieldbook.tracker.utilities.SharedPreferenceUtils;
@@ -78,7 +75,6 @@
7875
import java.util.ArrayList;
7976
import java.util.Arrays;
8077
import java.util.Calendar;
81-
import java.util.Collections;
8278
import java.util.LinkedHashMap;
8379
import java.util.List;
8480
import java.util.Locale;
@@ -380,7 +376,13 @@ public boolean onOptionsItemSelected(MenuItem item) {
380376
} else if (itemId == R.id.sortTrait) {
381377
showTraitSortDialog();
382378
} else if (itemId == R.id.importexport) {
383-
importExportDialog();
379+
if (BaseDocumentTreeUtil.Companion.getRoot(this) != null
380+
&& BaseDocumentTreeUtil.Companion.isEnabled(this)
381+
&& BaseDocumentTreeUtil.Companion.getDirectory(this, R.string.dir_trait) != null) {
382+
importExportDialog();
383+
} else {
384+
Toast.makeText(this, R.string.error_storage_directory, Toast.LENGTH_LONG).show();
385+
}
384386
} else if (itemId == R.id.toggleTrait) {
385387
changeAllVisibility();
386388
} else if (itemId == android.R.id.home) {
@@ -606,7 +608,7 @@ private void loadCloud() {
606608
try {
607609
startActivityForResult(Intent.createChooser(intent, "cloudFile"), REQUEST_CLOUD_FILE_CODE);
608610
} catch (android.content.ActivityNotFoundException ex) {
609-
Toast.makeText(getApplicationContext(), "No suitable File Manager was found.", Toast.LENGTH_SHORT).show();
611+
Toast.makeText(getApplicationContext(), R.string.no_suitable_file_manager_was_found, Toast.LENGTH_SHORT).show();
610612
}
611613
}
612614

app/src/main/java/com/fieldbook/tracker/preferences/StoragePreferencesFragment.java

+20-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
import android.view.View;
2020
import android.widget.EditText;
2121
import android.widget.LinearLayout;
22+
import android.widget.Toast;
2223

24+
import androidx.annotation.NonNull;
2325
import androidx.core.content.ContextCompat;
2426
import androidx.documentfile.provider.DocumentFile;
2527
import androidx.preference.ListPreference;
@@ -104,12 +106,16 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
104106
Preference databaseDelete = findPreference("pref_database_delete");
105107

106108
databaseImport.setOnPreferenceClickListener(preference -> {
107-
importDatabaseFilePermission();
109+
if (checkDirectory()) {
110+
importDatabaseFilePermission();
111+
}
108112
return true;
109113
});
110114

111115
databaseExport.setOnPreferenceClickListener(preference -> {
112-
exportDatabaseFilePermission();
116+
if (checkDirectory()) {
117+
exportDatabaseFilePermission();
118+
}
113119
return true;
114120
});
115121

@@ -119,6 +125,18 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
119125
});
120126
}
121127

128+
@NonNull
129+
private Boolean checkDirectory() {
130+
if (BaseDocumentTreeUtil.Companion.getRoot(context) != null
131+
&& BaseDocumentTreeUtil.Companion.isEnabled(context)
132+
&& BaseDocumentTreeUtil.Companion.getDirectory(context, R.string.dir_database) != null) {
133+
return true;
134+
} else {
135+
Toast.makeText(context, R.string.error_storage_directory, Toast.LENGTH_LONG).show();
136+
return false;
137+
}
138+
}
139+
122140
@Override
123141
public void onAttach(Context context) {
124142
super.onAttach(context);

app/src/main/java/com/fieldbook/tracker/utilities/ExportUtil.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,9 @@ class ExportUtil @Inject constructor(@ActivityContext private val context: Conte
524524
} else {
525525
if (preferences.getBoolean(GeneralKeys.EXPORT_OVERWRITE, false)) {
526526

527-
archivePreviousExport(filesToExport.first())
527+
if (filesToExport.isNotEmpty()) {
528+
archivePreviousExport(filesToExport.first())
529+
}
528530
}
529531
filesToExport.firstOrNull()
530532
}

app/src/main/res/values/strings.xml

+2
Original file line numberDiff line numberDiff line change
@@ -587,6 +587,7 @@
587587
<string name="export_content_traits_all">All traits</string>
588588
<string name="export_content_traits_active">Only active traits</string>
589589
<string name="export_error_general">Error during export</string>
590+
<string name="error_storage_directory">Storage directory is missing or corrupted.</string>
590591
<string name="export_error_data_missing">No data exists to export</string>
591592
<string name="export_complete">Export complete</string>
592593
<string name="export_progress">Exporting…</string>
@@ -1386,5 +1387,6 @@
13861387
<string name="pref_geonav_distance_threshold_summary">GeoNav automatically stops when distance from all plots exceeds this value in kilometers.</string>
13871388
<string name="pref_geonav_distance_threshold_title">Proximity Check</string>
13881389
<string name="activity_collect_proximity_warning">GeoNav Stopping, outside proximity of coordinates</string>
1390+
<string name="no_suitable_file_manager_was_found">No suitable File Manager was found.</string>
13891391
<string name="trait_error_invalid_multicat_value">Invalid categorical data was entered.</string>
13901392
</resources>

0 commit comments

Comments
 (0)