From: Reimar Döffinger Date: Thu, 19 Nov 2015 19:55:18 +0000 (+0100) Subject: More thorough writability check. X-Git-Url: http://gitweb.fperrin.net/?p=Dictionary.git;a=commitdiff_plain;h=4ca6ad93d52dce0812a814e283264e4b3e0c73fd More thorough writability check. --- diff --git a/src/com/hughes/android/dictionary/DictionaryApplication.java b/src/com/hughes/android/dictionary/DictionaryApplication.java index 1de2001..d635538 100644 --- a/src/com/hughes/android/dictionary/DictionaryApplication.java +++ b/src/com/hughes/android/dictionary/DictionaryApplication.java @@ -408,6 +408,17 @@ public class DictionaryApplication extends Application { return dictDir; } + static public boolean checkFileCreate(File dir) { + boolean res = false; + File testfile = new File(dir, "quickdic_writetest"); + try { + testfile.delete(); + res = testfile.createNewFile() & testfile.delete(); + } catch (Exception e) { + } + return res; + } + public File getWordListFile() { final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); String file = prefs.getString(getString(R.string.wordListFileKey), ""); diff --git a/src/com/hughes/android/dictionary/DictionaryManagerActivity.java b/src/com/hughes/android/dictionary/DictionaryManagerActivity.java index 127de43..f22f7d4 100644 --- a/src/com/hughes/android/dictionary/DictionaryManagerActivity.java +++ b/src/com/hughes/android/dictionary/DictionaryManagerActivity.java @@ -174,8 +174,9 @@ public class DictionaryManagerActivity extends ActionBarActivity { Toast.LENGTH_LONG).show(); } catch (Exception e) { String msg = getString(R.string.unzippingFailed, dest); - if (!application.getDictDir().canWrite()) { - msg = getString(R.string.notWritable, application.getDictDir().getAbsolutePath()); + File dir = application.getDictDir(); + if (!dir.canWrite() || !application.checkFileCreate(dir)) { + msg = getString(R.string.notWritable, dir.getAbsolutePath()); } new AlertDialog.Builder(context).setTitle(getString(R.string.error)).setMessage(msg).setNeutralButton("Close", null).show(); Log.e(LOG, "Failed to unzip.", e); diff --git a/src/com/hughes/android/dictionary/PreferenceActivity.java b/src/com/hughes/android/dictionary/PreferenceActivity.java index 470677a..a415d87 100644 --- a/src/com/hughes/android/dictionary/PreferenceActivity.java +++ b/src/com/hughes/android/dictionary/PreferenceActivity.java @@ -91,7 +91,8 @@ public class PreferenceActivity extends android.preference.PreferenceActivity public void onSharedPreferenceChanged(SharedPreferences p, String v) { final DictionaryApplication application = (DictionaryApplication)getApplication(); File dictDir = application.getDictDir(); - if (!dictDir.isDirectory() || !dictDir.canWrite()) { + if (!dictDir.isDirectory() || !dictDir.canWrite() || + !application.checkFileCreate(dictDir)) { String dirs = ""; String externalDir = Environment.getExternalStorageDirectory().getAbsolutePath(); if (new File(externalDir).canWrite())