]> gitweb.fperrin.net Git - Dictionary.git/blobdiff - src/com/hughes/android/dictionary/PreferenceActivity.java
Small improvements when SDcard is missing.
[Dictionary.git] / src / com / hughes / android / dictionary / PreferenceActivity.java
index e1412594bf8b3b9ad0c3986fca85ba75562eb07c..bcca16a6ceabc8d83a6892b25098dfce07a51948 100644 (file)
@@ -66,7 +66,19 @@ public class PreferenceActivity extends android.preference.PreferenceActivity
 
         defaultDic.setEntries(entries);
         defaultDic.setEntryValues(entryvalues);
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
+        prefs.unregisterOnSharedPreferenceChangeListener(this);
+    }
 
+    @Override
+    protected void onResume() {
+        super.onResume();
+        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
         prefs.registerOnSharedPreferenceChangeListener(this);
     }
 
@@ -79,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())
@@ -91,12 +104,22 @@ public class PreferenceActivity extends android.preference.PreferenceActivity
                         dirs += "\n" + f.getAbsolutePath();
                 }
             } else {
-                String externalFilesDir = getApplicationContext().getExternalFilesDir(null).getAbsolutePath();
-                if (new File(externalFilesDir).canWrite())
-                    dirs += "\n" + externalFilesDir;
+                File efd = null;
+                try {
+                    efd = getApplicationContext().getExternalFilesDir(null);
+                } catch (Exception e) {
+                }
+                if (efd != null) {
+                    String externalFilesDir = efd.getAbsolutePath();
+                    if (new File(externalFilesDir).canWrite())
+                        dirs += "\n" + externalFilesDir;
+                }
             }
+            File fd = getApplicationContext().getFilesDir();
+            if (fd.canWrite())
+                dirs += "\n" + fd.getAbsolutePath();
             new AlertDialog.Builder(this).setTitle(getString(R.string.error))
-                .setMessage("Chosen directory not writeable, try one of" + dirs)
+                .setMessage(getString(R.string.chosenNotWritable) + dirs)
                     .setNeutralButton("Close", null).show();
         }
     }