From: Reimar Döffinger Date: Sun, 14 Feb 2016 16:09:49 +0000 (+0100) Subject: Select app-specific storage by default. X-Git-Url: http://gitweb.fperrin.net/?p=Dictionary.git;a=commitdiff_plain;h=d4ada19d67f9c407010b7a8b2ce1512bf918f5de 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. --- 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();