From 132ce36a57f9221ce129eb4cf1cf99ef0f556b7e Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Mon, 4 Apr 2016 07:58:07 -0400 Subject: [PATCH] More detailed logs in case getFilesDir fails --- .../uhabits/fragments/ListHabitsFragment.java | 9 ++++-- .../uhabits/helpers/DatabaseHelper.java | 29 +++++++++++++++---- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/isoron/uhabits/fragments/ListHabitsFragment.java b/app/src/main/java/org/isoron/uhabits/fragments/ListHabitsFragment.java index 4c8bc4190..1e9983833 100644 --- a/app/src/main/java/org/isoron/uhabits/fragments/ListHabitsFragment.java +++ b/app/src/main/java/org/isoron/uhabits/fragments/ListHabitsFragment.java @@ -55,6 +55,7 @@ import org.isoron.uhabits.BaseActivity; import org.isoron.uhabits.commands.Command; import org.isoron.uhabits.commands.ToggleRepetitionCommand; import org.isoron.uhabits.dialogs.FilePickerDialog; +import org.isoron.uhabits.helpers.DatabaseHelper; import org.isoron.uhabits.helpers.DateHelper; import org.isoron.uhabits.helpers.UIHelper.OnSavedListener; import org.isoron.uhabits.helpers.HintManager; @@ -428,8 +429,12 @@ public class ListHabitsFragment extends Fragment public void showImportDialog() { - File dir = activity.getExternalFilesDir(null); - if(dir == null) return; + File dir = DatabaseHelper.getFilesDir(null); + if(dir == null) + { + activity.showToast(R.string.could_not_import); + return; + } FilePickerDialog picker = new FilePickerDialog(activity, dir); picker.setListener(new FilePickerDialog.OnFileSelectedListener() diff --git a/app/src/main/java/org/isoron/uhabits/helpers/DatabaseHelper.java b/app/src/main/java/org/isoron/uhabits/helpers/DatabaseHelper.java index fa8c509b6..b8bb05bfb 100644 --- a/app/src/main/java/org/isoron/uhabits/helpers/DatabaseHelper.java +++ b/app/src/main/java/org/isoron/uhabits/helpers/DatabaseHelper.java @@ -24,6 +24,7 @@ import android.database.Cursor; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; +import android.util.Log; import com.activeandroid.ActiveAndroid; import com.activeandroid.Cache; @@ -126,14 +127,24 @@ public class DatabaseHelper } @Nullable - public static File getFilesDir(String prefix) + public static File getFilesDir(@Nullable String prefix) { + if(prefix == null) prefix = ""; + Context context = HabitsApplication.getContext(); - if(context == null) return null; + if(context == null) + { + Log.e("DatabaseHelper", "getFilesDir: no application context available"); + return null; + } File chosenDir = null; File externalFilesDirs[] = ContextCompat.getExternalFilesDirs(context, null); - if(externalFilesDirs == null) return null; + if(externalFilesDirs == null) + { + Log.e("DatabaseHelper", "getFilesDir: getExternalFilesDirs returned null"); + return null; + } for(File dir : externalFilesDirs) { @@ -142,10 +153,18 @@ public class DatabaseHelper break; } - if(chosenDir == null) return null; + if(chosenDir == null) + { + Log.e("DatabaseHelper", "getFilesDir: all external dirs are null or non-writable"); + return null; + } File dir = new File(String.format("%s/%s/", chosenDir.getAbsolutePath(), prefix)); - dir.mkdirs(); + if (!dir.exists() && !dir.mkdirs()) + { + Log.e("DatabaseHelper", "getFilesDir: chosen dir does not exist and cannot be created"); + return null; + } return dir; }