From d4ada19d67f9c407010b7a8b2ce1512bf918f5de Mon Sep 17 00:00:00 2001 From: =?utf8?q?Reimar=20D=C3=B6ffinger?= Date: Sun, 14 Feb 2016 17:09:49 +0100 Subject: [PATCH] Select app-specific storage by default. Should avoid issues with "cleanup" apps deleting the dictionaries. Use the old default if there are issues with that though, or if there are still dictionaries around. --- .../dictionary/DictionaryApplication.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/com/hughes/android/dictionary/DictionaryApplication.java b/src/com/hughes/android/dictionary/DictionaryApplication.java index 61fd524..3c351d9 100644 --- a/src/com/hughes/android/dictionary/DictionaryApplication.java +++ b/src/com/hughes/android/dictionary/DictionaryApplication.java @@ -402,14 +402,33 @@ public class DictionaryApplication extends Application { }); } + private String selectDefaultDir() { + final File defaultDictDir = new File(Environment.getExternalStorageDirectory(), "quickDic"); + String dir = defaultDictDir.getAbsolutePath(); + File dictDir = new File(dir); + if (dictDir.isDirectory() && dictDir.list().length > 0) { + return dir; + } + File efd = getApplicationContext().getExternalFilesDir(null); + if (efd != null) { + efd.mkdirs(); + if (!dictDir.isDirectory() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + getApplicationContext().getExternalFilesDirs(null); + } + if (efd.isDirectory() && efd.canWrite() && checkFileCreate(efd)) { + return efd.getAbsolutePath(); + } + } + return dir; + } + public synchronized File getDictDir() { // This metaphor doesn't work, because we've already reset // prefsMightHaveChanged. final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); String dir = prefs.getString(getString(R.string.quickdicDirectoryKey), ""); if (dir.isEmpty()) { - final File defaultDictDir = new File(Environment.getExternalStorageDirectory(), "quickDic"); - dir = defaultDictDir.getAbsolutePath(); + dir = selectDefaultDir(); } dictDir = new File(dir); dictDir.mkdirs(); -- 2.43.0