X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2FDictionaryApplication.java;h=e15dfff2fa9eeb37652a450deda399263a69bcfe;hb=50e3589564c609cd41c430aa10b45dc9db06623b;hp=80bac89a7688b3fbbd0cf8e1509546807f2532d3;hpb=f1abec1b474dc8072ee59036e72ca481e8514101;p=Dictionary.git diff --git a/src/com/hughes/android/dictionary/DictionaryApplication.java b/src/com/hughes/android/dictionary/DictionaryApplication.java index 80bac89..e15dfff 100644 --- a/src/com/hughes/android/dictionary/DictionaryApplication.java +++ b/src/com/hughes/android/dictionary/DictionaryApplication.java @@ -283,7 +283,7 @@ public class DictionaryApplication extends Application { final List dictionaryFilesOrdered = new ArrayList(); final Map uncompressedFilenameToDictionaryInfo = new LinkedHashMap(); - + /** * Sometimes a deserialized version of this data structure isn't valid. * @return @@ -314,10 +314,10 @@ public class DictionaryApplication extends Application { DOWNLOADABLE_UNCOMPRESSED_FILENAME_NAME_TO_DICTIONARY_INFO.put( dictionaryInfo.uncompressedFilename, dictionaryInfo); } - reader.close(); } catch (IOException e) { Log.e(LOG, "Failed to load downloadable dictionary lists.", e); } + try { reader.close(); } catch (IOException e) {} } private File dictDir; @@ -402,14 +402,40 @@ 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 = null; + try { + efd = getApplicationContext().getExternalFilesDir(null); + } catch (Exception e) { + } + 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(); + } + } + if (!dictDir.isDirectory() && !dictDir.mkdirs()) { + return getApplicationContext().getFilesDir().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();