summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/dashboard
diff options
context:
space:
mode:
authorFabrice Di Meglio <fdimeglio@google.com>2014-03-05 16:24:35 -0800
committerFabrice Di Meglio <fdimeglio@google.com>2014-03-05 16:24:35 -0800
commit3ec129b1b50d8de3232009a1a032694c6fdb048d (patch)
tree341365cf362cff9bfab94c4975add2b46794e2ce /src/com/android/settings/dashboard
parent6f0739a3d9a9eca1591ae6bada1dd4d1d92c0def (diff)
downloadpackages_apps_Settings-3ec129b1b50d8de3232009a1a032694c6fdb048d.zip
packages_apps_Settings-3ec129b1b50d8de3232009a1a032694c6fdb048d.tar.gz
packages_apps_Settings-3ec129b1b50d8de3232009a1a032694c6fdb048d.tar.bz2
Fix bug #13322036 stability-sys: Java crash in com.android.settings:
android.database.sqlite.SQLiteException: malformed MATCH expression: [ avs- /y@ggmd"*] (code 1) - the real issue was linked to the double quote - add an InputFilter to the query EditText so that we allow only Letters / Digits / Spaces (and this should works for all Locales) Change-Id: I6016cc25d154b386870379dfa4c79a40c5505530
Diffstat (limited to 'src/com/android/settings/dashboard')
-rw-r--r--src/com/android/settings/dashboard/DashboardSummary.java32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java
index ce3b0c0..40eccbc 100644
--- a/src/com/android/settings/dashboard/DashboardSummary.java
+++ b/src/com/android/settings/dashboard/DashboardSummary.java
@@ -22,6 +22,9 @@ import android.database.Cursor;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.Editable;
+import android.text.InputFilter;
+import android.text.SpannableStringBuilder;
+import android.text.Spanned;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.LayoutInflater;
@@ -68,6 +71,32 @@ public class DashboardSummary extends Fragment {
}
}
+ /**
+ * A basic InputFilter for filtering query input (mainly because we are issuing SQL queries
+ * that need to be valid ones. So just accept Letters, Digits and Spaces.
+ */
+ private class QueryInputFilter implements InputFilter {
+
+ public QueryInputFilter() {
+ }
+
+ @Override
+ public CharSequence filter(CharSequence source, int start, int end, Spanned dest,
+ int dstart, int dend) {
+ SpannableStringBuilder sb = null;
+ for (int i = start; i < end; i++) {
+ char c = source.charAt(i);
+ if (!Character.isLetterOrDigit(c) && !Character.isSpaceChar(c)) {
+ if (sb == null) {
+ sb = new SpannableStringBuilder(source, start, end);
+ }
+ sb.delete(i, i + 1);
+ }
+ }
+ return sb;
+ }
+ }
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -140,6 +169,9 @@ public class DashboardSummary extends Fragment {
}
});
+ final InputFilter queryFilter = new QueryInputFilter();
+ mEditText.setFilters(new InputFilter[] { queryFilter });
+
mListView = (ListView) view.findViewById(R.id.list_results);
mListView.setAdapter(mAdapter);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {