]> gitweb.fperrin.net Git - Dictionary.git/commitdiff
Check that specified path is writeable.
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>
Wed, 18 Nov 2015 20:25:42 +0000 (21:25 +0100)
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>
Wed, 18 Nov 2015 20:25:42 +0000 (21:25 +0100)
Also show a list of alternatives.

AndroidManifest.xml
src/com/hughes/android/dictionary/DictionaryApplication.java
src/com/hughes/android/dictionary/PreferenceActivity.java

index e5137e8b14ed27a8ed85d9bcbc40addb9aa2065b..b92e9fbf5b28addb07651ed8f71abe3b29264853 100644 (file)
@@ -2,7 +2,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.hughes.android.dictionary"
     android:installLocation="auto"
-    android:versionCode="39"
+    android:versionCode="40"
     android:versionName="5.1.2" >
 
     <uses-sdk
index 24fe0b405e7b9b619a665a4aa095c37180d885b1..1de2001ff6452cede91465c141edc9ac4ea03518 100644 (file)
@@ -405,18 +405,6 @@ public class DictionaryApplication extends Application {
         if (!dictDir.isDirectory() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
              getApplicationContext().getExternalFilesDirs(null);
         }
-        if (!dictDir.isDirectory() || !dictDir.canWrite()) {
-            String dirs = " " + Environment.getExternalStorageDirectory();
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
-                File[] files = getApplicationContext().getExternalFilesDirs(null);
-                for (File f : files) {
-                    dirs += " " + f.getAbsolutePath();
-                }
-            } else {
-                dirs += " " + getApplicationContext().getExternalFilesDir(null).getAbsolutePath();
-            }
-            Toast.makeText(getApplicationContext(), "Chosen directory not writeable, try one of" + dirs, Toast.LENGTH_LONG).show();
-        }
         return dictDir;
     }
 
index c7132e63cffdcdbae878cdedfbee4381ad374635..e1412594bf8b3b9ad0c3986fca85ba75562eb07c 100644 (file)
 
 package com.hughes.android.dictionary;
 
+import android.app.AlertDialog;
 import android.content.SharedPreferences;
 import android.os.Bundle;
+import android.os.Build;
+import android.os.Environment;
 import android.preference.ListPreference;
 import android.preference.PreferenceManager;
 
+import java.io.File;
 import java.util.List;
 
-public class PreferenceActivity extends android.preference.PreferenceActivity {
+public class PreferenceActivity extends android.preference.PreferenceActivity
+    implements SharedPreferences.OnSharedPreferenceChangeListener {
 
     static boolean prefsMightHaveChanged = false;
 
@@ -61,10 +66,38 @@ public class PreferenceActivity extends android.preference.PreferenceActivity {
 
         defaultDic.setEntries(entries);
         defaultDic.setEntryValues(entryvalues);
+
+        prefs.registerOnSharedPreferenceChangeListener(this);
     }
 
     @Override
     public void onContentChanged() {
         super.onContentChanged();
     }
+
+    @Override
+    public void onSharedPreferenceChanged(SharedPreferences p, String v) {
+        final DictionaryApplication application = (DictionaryApplication)getApplication();
+        File dictDir = application.getDictDir();
+        if (!dictDir.isDirectory() || !dictDir.canWrite()) {
+            String dirs = "";
+            String externalDir = Environment.getExternalStorageDirectory().getAbsolutePath();
+            if (new File(externalDir).canWrite())
+                dirs += "\n" + externalDir + "/quickDic";
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+                File[] files = getApplicationContext().getExternalFilesDirs(null);
+                for (File f : files) {
+                    if (f.canWrite())
+                        dirs += "\n" + f.getAbsolutePath();
+                }
+            } else {
+                String externalFilesDir = getApplicationContext().getExternalFilesDir(null).getAbsolutePath();
+                if (new File(externalFilesDir).canWrite())
+                    dirs += "\n" + externalFilesDir;
+            }
+            new AlertDialog.Builder(this).setTitle(getString(R.string.error))
+                .setMessage("Chosen directory not writeable, try one of" + dirs)
+                    .setNeutralButton("Close", null).show();
+        }
+    }
 }