The basic problem
I noticed a strange behavior when I combine an InputFilter
with a TextWatcher
.
What I basically want to do is to help the user type a MAC address. First of all I want to add a separator (":") every two character the user types.
The code works as expected with my vanilla Nexus 7, but with my LG Optimus 4X HD (fair enough it has a nightly Cyanogenmod on it), but also with a stock Samsung Galaxy S4, there is a strange behavior.
The code
I added an EditText
with the ID editText1
to an empty Project and Layout and added the following code to my activity (auto generated functions not copied):
public class MainActivity extends Activity {
private static final String LOG_TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText et = (EditText) this.findViewById(R.id.editText1);
et.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
et.addTextChangedListener(new TestTextWatcher());
InputFilter[] inFi = { new InputFilter.LengthFilter(17),
new TestInputFilter() };
et.getText().setFilters(inFi);
}
private static class TestTextWatcher implements TextWatcher {
private static final String regExp = "..(:..){5}";
private static final Pattern pat = Pattern.compile(regExp);
@Override
public void afterTextChanged(Editable s) {
Log.d(LOG_TAG, "AFTERTEXTCHANGED: " + s.toString());
Matcher m = pat.matcher(s);
// if does not match regexp
if (!m.matches() && !m.hitEnd()) {
SpannableStringBuilder ssb = new SpannableStringBuilder(s);
Log.d(LOG_TAG, "remove " + ssb.toString());
for (int i = 0; i < ssb.length(); i++) {
char c = ssb.charAt(i);
if (c == ':') {
ssb.delete(i, i + 1);
i--; // recheck same position
}
}
Log.d(LOG_TAG, "insert " + ssb.toString());
for (int i = 2; i < ssb.length(); i = i + 3) {
ssb.insert(i, ":");
Log.d(LOG_TAG, "Inserting: " + i + " " + ssb.toString());
}
Log.d(LOG_TAG, "trunc " + ssb.toString());
if (ssb.length() > 17) {
ssb.delete(17, ssb.length());
}
Log.d(LOG_TAG, "replace " + ssb.toString());
s.replace(0, s.length(), ssb);
}
}
}
private static class TestInputFilter implements InputFilter {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
Log.d(LOG_TAG, "FILTER: source: " + source.toString() + " dest: "
+ dest.toString());
// if character is deleted do nothing
if (end - start == 0) {
return null;
}
StringBuilder sb = new StringBuilder(dest.toString());
sb.replace(dstart, dend, source.toString().substring(start, end));
if ((sb.length() - 2) % 3 == 0 && sb.length() < 17) {
SpannableStringBuilder sourceAsSpannableBuilder = new SpannableStringBuilder(
source);
sourceAsSpannableBuilder = (SpannableStringBuilder) sourceAsSpannableBuilder
.subSequence(start, end);
sourceAsSpannableBuilder.append(":");
Log.d(LOG_TAG, "filter, spannable " + sourceAsSpannableBuilder.toString());
return sourceAsSpannableBuilder;
}
return null;
}
}
}
The problem
I pressed mutliple buttoms to add some characters and then try to delete all characters. Log of Nexus 7 (as it should be):
10-12 17:18:36.336: D/MainActivity(9535): FILTER: source: s dest:
10-12 17:18:36.336: D/MainActivity(9535): AFTERTEXTCHANGED: s
10-12 17:18:38.088: D/MainActivity(9535): FILTER: source: s dest: s
10-12 17:18:38.088: D/MainActivity(9535): filter, spannable s:
10-12 17:18:38.088: D/MainActivity(9535): AFTERTEXTCHANGED: ss:
10-12 17:18:38.508: D/MainActivity(9535): FILTER: source: s dest: ss:
10-12 17:18:38.508: D/MainActivity(9535): AFTERTEXTCHANGED: ss:s
10-12 17:18:38.778: D/MainActivity(9535): FILTER: source: s dest: ss:s
10-12 17:18:38.778: D/MainActivity(9535): filter, spannable s:
10-12 17:18:38.778: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:
10-12 17:18:39.079: D/MainActivity(9535): FILTER: source: s dest: ss:ss:
10-12 17:18:39.079: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:s
10-12 17:18:39.309: D/MainActivity(9535): FILTER: source: s dest: ss:ss:s
10-12 17:18:39.309: D/MainActivity(9535): filter, spannable s:
10-12 17:18:39.309: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:ss:
10-12 17:18:39.539: D/MainActivity(9535): FILTER: source: s dest: ss:ss:ss:
10-12 17:18:39.539: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:ss:s
10-12 17:18:39.729: D/MainActivity(9535): FILTER: source: s dest: ss:ss:ss:s
10-12 17:18:39.729: D/MainActivity(9535): filter, spannable s:
10-12 17:18:39.729: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:ss:ss:
10-12 17:18:39.930: D/MainActivity(9535): FILTER: source: s dest: ss:ss:ss:ss:
10-12 17:18:39.940: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:ss:ss:s
10-12 17:18:40.120: D/MainActivity(9535): FILTER: source: s dest: ss:ss:ss:ss:s
10-12 17:18:40.120: D/MainActivity(9535): filter, spannable s:
10-12 17:18:40.120: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:ss:ss:ss:
10-12 17:18:40.330: D/MainActivity(9535): FILTER: source: s dest: ss:ss:ss:ss:ss:
10-12 17:18:40.330: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:ss:ss:ss:s
10-12 17:18:40.630: D/MainActivity(9535): FILTER: source: s dest: ss:ss:ss:ss:ss:s
10-12 17:18:40.630: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:ss:ss:ss:ss
10-12 17:18:40.931: D/MainActivity(9535): FILTER: source: dest: ss:ss:ss:ss:ss:ss
10-12 17:18:41.241: D/MainActivity(9535): FILTER: source: dest: ss:ss:ss:ss:ss:ss
10-12 17:18:42.582: D/MainActivity(9535): FILTER: source: dest: ss:ss:ss:ss:ss:ss
10-12 17:18:42.582: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:ss:ss:ss:s
10-12 17:18:42.772: D/MainActivity(9535): FILTER: source: dest: ss:ss:ss:ss:ss:s
10-12 17:18:42.772: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:ss:ss:ss:
10-12 17:18:42.943: D/MainActivity(9535): FILTER: source: dest: ss:ss:ss:ss:ss:
10-12 17:18:42.953: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:ss:ss:ss
10-12 17:18:43.123: D/MainActivity(9535): FILTER: source: dest: ss:ss:ss:ss:ss
10-12 17:18:43.123: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:ss:ss:s
10-12 17:18:43.283: D/MainActivity(9535): FILTER: source: dest: ss:ss:ss:ss:s
10-12 17:18:43.283: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:ss:ss:
10-12 17:18:43.473: D/MainActivity(9535): FILTER: source: dest: ss:ss:ss:ss:
10-12 17:18:43.473: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:ss:ss
10-12 17:18:43.623: D/MainActivity(9535): FILTER: source: dest: ss:ss:ss:ss
10-12 17:18:43.623: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:ss:s
10-12 17:18:43.793: D/MainActivity(9535): FILTER: source: dest: ss:ss:ss:s
10-12 17:18:43.793: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:ss:
10-12 17:18:43.974: D/MainActivity(9535): FILTER: source: dest: ss:ss:ss:
10-12 17:18:43.974: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:ss
10-12 17:18:44.144: D/MainActivity(9535): FILTER: source: dest: ss:ss:ss
10-12 17:18:44.144: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:s
10-12 17:18:44.314: D/MainActivity(9535): FILTER: source: dest: ss:ss:s
10-12 17:18:44.314: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss:
10-12 17:18:44.484: D/MainActivity(9535): FILTER: source: dest: ss:ss:
10-12 17:18:44.484: D/MainActivity(9535): AFTERTEXTCHANGED: ss:ss
10-12 17:18:44.644: D/MainActivity(9535): FILTER: source: dest: ss:ss
10-12 17:18:44.644: D/MainActivity(9535): AFTERTEXTCHANGED: ss:s
10-12 17:18:44.814: D/MainActivity(9535): FILTER: source: dest: ss:s
10-12 17:18:44.814: D/MainActivity(9535): AFTERTEXTCHANGED: ss:
10-12 17:18:44.985: D/MainActivity(9535): FILTER: source: dest: ss:
10-12 17:18:44.995: D/MainActivity(9535): AFTERTEXTCHANGED: ss
10-12 17:18:45.125: D/MainActivity(9535): FILTER: source: dest: ss
10-12 17:18:45.125: D/MainActivity(9535): AFTERTEXTCHANGED: s
10-12 17:18:45.305: D/MainActivity(9535): FILTER: source: dest: s
10-12 17:18:45.305: D/MainActivity(9535): AFTERTEXTCHANGED:
10-12 17:18:45.445: D/MainActivity(9535): FILTER: source: dest:
The output of the LG:
10-12 17:28:54.280: D/MainActivity(15778): FILTER: source: a dest:
10-12 17:28:54.280: D/MainActivity(15778): AFTERTEXTCHANGED: a
10-12 17:28:54.680: D/MainActivity(15778): FILTER: source: a dest: a
10-12 17:28:54.690: D/MainActivity(15778): filter, spannable a:
10-12 17:28:54.690: D/MainActivity(15778): AFTERTEXTCHANGED: aa:
10-12 17:28:55.140: D/MainActivity(15778): FILTER: source: a dest: aa:
10-12 17:28:55.140: D/MainActivity(15778): AFTERTEXTCHANGED: aa:a
10-12 17:28:55.570: D/MainActivity(15778): FILTER: source: a dest: aa:a
10-12 17:28:55.570: D/MainActivity(15778): filter, spannable a:
10-12 17:28:55.570: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:
10-12 17:28:55.870: D/MainActivity(15778): FILTER: source: a dest: aa:aa:
10-12 17:28:55.870: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:a
10-12 17:28:56.140: D/MainActivity(15778): FILTER: source: a dest: aa:aa:a
10-12 17:28:56.140: D/MainActivity(15778): filter, spannable a:
10-12 17:28:56.140: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:aa:
10-12 17:28:56.390: D/MainActivity(15778): FILTER: source: a dest: aa:aa:aa:
10-12 17:28:56.390: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:aa:a
10-12 17:28:56.720: D/MainActivity(15778): FILTER: source: a dest: aa:aa:aa:a
10-12 17:28:56.720: D/MainActivity(15778): filter, spannable a:
10-12 17:28:56.730: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:aa:aa:
10-12 17:28:56.960: D/MainActivity(15778): FILTER: source: a dest: aa:aa:aa:aa:
10-12 17:28:56.960: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:aa:aa:a
10-12 17:28:57.210: D/MainActivity(15778): FILTER: source: a dest: aa:aa:aa:aa:a
10-12 17:28:57.210: D/MainActivity(15778): filter, spannable a:
10-12 17:28:57.210: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:aa:aa:aa:
10-12 17:28:57.460: D/MainActivity(15778): FILTER: source: a dest: aa:aa:aa:aa:aa:
10-12 17:28:57.460: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:aa:aa:aa:a
10-12 17:28:57.740: D/MainActivity(15778): FILTER: source: a dest: aa:aa:aa:aa:aa:a
10-12 17:28:57.740: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:aa:aa:aa:aa
10-12 17:28:58.040: D/MainActivity(15778): FILTER: source: dest: aa:aa:aa:aa:aa:aa
10-12 17:28:58.380: D/MainActivity(15778): FILTER: source: dest: aa:aa:aa:aa:aa:aa
10-12 17:28:59.160: D/MainActivity(15778): FILTER: source: dest: aa:aa:aa:aa:aa:aa
10-12 17:28:59.160: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:aa:aa:aa:a
10-12 17:28:59.360: D/MainActivity(15778): FILTER: source: dest: aa:aa:aa:aa:aa:a
10-12 17:28:59.360: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:aa:aa:aa:
10-12 17:28:59.530: D/MainActivity(15778): FILTER: source: dest: aa:aa:aa:aa:aa:
10-12 17:28:59.530: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:aa:aa:aa
10-12 17:28:59.680: D/MainActivity(15778): FILTER: source: dest: aa:aa:aa:aa:aa
10-12 17:28:59.680: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:aa:aa:a
10-12 17:28:59.830: D/MainActivity(15778): FILTER: source: dest: aa:aa:aa:aa:a
10-12 17:28:59.830: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:aa:aa:
10-12 17:28:59.970: D/MainActivity(15778): FILTER: source: dest: aa:aa:aa:aa:
10-12 17:28:59.970: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:aa:aa
10-12 17:29:00.100: D/MainActivity(15778): FILTER: source: dest: aa:aa:aa:aa
10-12 17:29:00.100: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:aa:a
10-12 17:29:00.280: D/MainActivity(15778): FILTER: source: dest: aa:aa:aa:a
10-12 17:29:00.280: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:aa:
10-12 17:29:00.410: D/MainActivity(15778): FILTER: source: dest: aa:aa:aa:
10-12 17:29:00.410: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:aa
10-12 17:29:00.550: D/MainActivity(15778): FILTER: source: dest: aa:aa:aa
10-12 17:29:00.550: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:a
10-12 17:29:00.700: D/MainActivity(15778): FILTER: source: dest: aa:aa:a
10-12 17:29:00.700: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:
10-12 17:29:00.860: D/MainActivity(15778): FILTER: source: dest: aa:aa:
10-12 17:29:00.860: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa
10-12 17:29:01.000: D/MainActivity(15778): FILTER: source: dest: aa:aa
10-12 17:29:01.000: D/MainActivity(15778): AFTERTEXTCHANGED: aa:a
10-12 17:29:01.150: D/MainActivity(15778): FILTER: source: dest: aa:a
10-12 17:29:01.150: D/MainActivity(15778): AFTERTEXTCHANGED: aa:
I cant delete the last symbols ("aa:"), because afterTextChanged or filter don't get called. If i move the cursor and add characters, i can delete it:
10-12 17:30:13.600: D/MainActivity(15778): FILTER: source: a dest: aa:
10-12 17:30:13.610: D/MainActivity(15778): AFTERTEXTCHANGED: aaa:
10-12 17:30:13.610: D/MainActivity(15778): remove aaa:
10-12 17:30:13.610: D/MainActivity(15778): insert aaa
10-12 17:30:13.610: D/MainActivity(15778): Inserting: 2 aa:a
10-12 17:30:13.610: D/MainActivity(15778): trunc aa:a
10-12 17:30:13.610: D/MainActivity(15778): replace aa:a
10-12 17:30:13.610: D/MainActivity(15778): FILTER: source: aa:a dest: aaa:
10-12 17:30:13.610: D/MainActivity(15778): AFTERTEXTCHANGED: aa:a
10-12 17:30:13.940: D/MainActivity(15778): FILTER: source: a dest: aa:a
10-12 17:30:13.940: D/MainActivity(15778): filter, spannable a:
10-12 17:30:13.940: D/MainActivity(15778): AFTERTEXTCHANGED: aaa::a
10-12 17:30:13.940: D/MainActivity(15778): remove aaa::a
10-12 17:30:13.940: D/MainActivity(15778): insert aaaa
10-12 17:30:13.940: D/MainActivity(15778): Inserting: 2 aa:aa
10-12 17:30:13.940: D/MainActivity(15778): trunc aa:aa
10-12 17:30:13.940: D/MainActivity(15778): replace aa:aa
10-12 17:30:13.940: D/MainActivity(15778): FILTER: source: aa:aa dest: aaa::a
10-12 17:30:13.940: D/MainActivity(15778): filter, spannable aa:aa:
10-12 17:30:13.940: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa:
10-12 17:30:15.270: D/MainActivity(15778): FILTER: source: dest: aa:aa:
10-12 17:30:15.280: D/MainActivity(15778): AFTERTEXTCHANGED: aa:aa
10-12 17:30:15.460: D/MainActivity(15778): FILTER: source: dest: aa:aa
10-12 17:30:15.460: D/MainActivity(15778): AFTERTEXTCHANGED: aa:a
10-12 17:30:15.630: D/MainActivity(15778): FILTER: source: dest: aa:a
10-12 17:30:15.630: D/MainActivity(15778): AFTERTEXTCHANGED: aa:
10-12 17:30:15.810: D/MainActivity(15778): FILTER: source: dest: aa:
10-12 17:30:15.810: D/MainActivity(15778): AFTERTEXTCHANGED: aa
10-12 17:30:15.970: D/MainActivity(15778): FILTER: source: dest: aa
10-12 17:30:15.970: D/MainActivity(15778): AFTERTEXTCHANGED: a
10-12 17:30:16.150: D/MainActivity(15778): FILTER: source: dest: a
10-12 17:30:16.150: D/MainActivity(15778): AFTERTEXTCHANGED:
The Galaxy S4 behaves eaven more strange: If i press ONE key, it adds all the characters written plus the key pressed, when the dirst separator was added:
10-12 17:33:35.770: D/MainActivity(26025): FILTER: source: l dest:
10-12 17:33:35.770: D/MainActivity(26025): AFTERTEXTCHANGED: l
10-12 17:33:36.181: D/MainActivity(26025): FILTER: source: ll dest: l
10-12 17:33:36.181: D/MainActivity(26025): filter, spannable ll:
10-12 17:33:36.181: D/MainActivity(26025): AFTERTEXTCHANGED: ll:
10-12 17:33:36.561: D/MainActivity(26025): FILTER: source: lll dest: ll:
10-12 17:33:36.561: D/MainActivity(26025): AFTERTEXTCHANGED: ll:lll
10-12 17:33:36.561: D/MainActivity(26025): remove ll:lll
10-12 17:33:36.561: D/MainActivity(26025): insert lllll
10-12 17:33:36.561: D/MainActivity(26025): Inserting: 2 ll:lll
10-12 17:33:36.561: D/MainActivity(26025): Inserting: 5 ll:ll:l
10-12 17:33:36.561: D/MainActivity(26025): trunc ll:ll:l
10-12 17:33:36.561: D/MainActivity(26025): replace ll:ll:l
10-12 17:33:36.561: D/MainActivity(26025): FILTER: source: ll:ll:l dest: ll:lll
10-12 17:33:36.561: D/MainActivity(26025): AFTERTEXTCHANGED: ll:ll:l
10-12 17:33:36.942: D/MainActivity(26025): FILTER: source: llll dest: ll:ll:l
10-12 17:33:36.942: D/MainActivity(26025): filter, spannable llll:
10-12 17:33:36.942: D/MainActivity(26025): AFTERTEXTCHANGED: ll:ll:lllll:
10-12 17:33:36.942: D/MainActivity(26025): remove ll:ll:lllll:
10-12 17:33:36.942: D/MainActivity(26025): insert lllllllll
10-12 17:33:36.942: D/MainActivity(26025): Inserting: 2 ll:lllllll
10-12 17:33:36.942: D/MainActivity(26025): Inserting: 5 ll:ll:lllll
10-12 17:33:36.942: D/MainActivity(26025): Inserting: 8 ll:ll:ll:lll
10-12 17:33:36.942: D/MainActivity(26025): Inserting: 11 ll:ll:ll:ll:l
10-12 17:33:36.942: D/MainActivity(26025): trunc ll:ll:ll:ll:l
10-12 17:33:36.942: D/MainActivity(26025): replace ll:ll:ll:ll:l
10-12 17:33:36.942: D/MainActivity(26025): FILTER: source: ll:ll:ll:ll:l dest: ll:ll:lllll:
10-12 17:33:36.952: D/MainActivity(26025): AFTERTEXTCHANGED: ll:ll:ll:ll:l
10-12 17:33:37.362: D/MainActivity(26025): FILTER: source: llll dest: ll:ll:ll:ll:l
10-12 17:33:37.372: D/MainActivity(26025): AFTERTEXTCHANGED: ll:ll:ll:ll:lllll
10-12 17:33:37.372: D/MainActivity(26025): remove ll:ll:ll:ll:lllll
10-12 17:33:37.372: D/MainActivity(26025): insert lllllllllllll
10-12 17:33:37.372: D/MainActivity(26025): Inserting: 2 ll:lllllllllll
10-12 17:33:37.372: D/MainActivity(26025): Inserting: 5 ll:ll:lllllllll
10-12 17:33:37.372: D/MainActivity(26025): Inserting: 8 ll:ll:ll:lllllll
10-12 17:33:37.372: D/MainActivity(26025): Inserting: 11 ll:ll:ll:ll:lllll
10-12 17:33:37.372: D/MainActivity(26025): Inserting: 14 ll:ll:ll:ll:ll:lll
10-12 17:33:37.372: D/MainActivity(26025): Inserting: 17 ll:ll:ll:ll:ll:ll:l
10-12 17:33:37.372: D/MainActivity(26025): trunc ll:ll:ll:ll:ll:ll:l
10-12 17:33:37.372: D/MainActivity(26025): replace ll:ll:ll:ll:ll:ll
10-12 17:33:37.372: D/MainActivity(26025): FILTER: source: ll:ll:ll:ll:ll:ll dest: ll:ll:ll:ll:lllll
10-12 17:33:37.372: D/MainActivity(26025): AFTERTEXTCHANGED: ll:ll:ll:ll:ll:ll
10-12 17:33:37.852: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll:ll:ll:ll
10-12 17:33:38.343: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll:ll:ll:ll
10-12 17:33:39.744: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll:ll:ll:ll
10-12 17:33:39.955: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll:ll:ll:ll
10-12 17:33:40.195: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll:ll:ll:ll
10-12 17:33:40.615: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll:ll:ll:ll
10-12 17:33:40.855: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll:ll:ll:ll
10-12 17:33:41.106: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll:ll:ll:ll
10-12 17:33:41.316: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll:ll:ll:ll
10-12 17:33:41.586: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll:ll:ll:ll
10-12 17:33:41.586: D/MainActivity(26025): AFTERTEXTCHANGED: ll:ll:ll:ll:ll:l
10-12 17:33:41.756: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll:ll:ll:l
10-12 17:33:41.756: D/MainActivity(26025): AFTERTEXTCHANGED: ll:ll:ll:ll:ll:
10-12 17:33:41.956: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll:ll:ll:
10-12 17:33:41.966: D/MainActivity(26025): AFTERTEXTCHANGED: ll:ll:ll:ll:ll
10-12 17:33:42.187: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll:ll:ll
10-12 17:33:42.187: D/MainActivity(26025): AFTERTEXTCHANGED: ll:ll:ll:ll:l
10-12 17:33:42.357: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll:ll:l
10-12 17:33:42.357: D/MainActivity(26025): AFTERTEXTCHANGED: ll:ll:ll:ll:
10-12 17:33:42.557: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll:ll:
10-12 17:33:42.557: D/MainActivity(26025): AFTERTEXTCHANGED: ll:ll:ll:ll
10-12 17:33:42.747: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll:ll
10-12 17:33:42.747: D/MainActivity(26025): AFTERTEXTCHANGED: ll:ll:ll:l
10-12 17:33:42.967: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll:l
10-12 17:33:42.967: D/MainActivity(26025): AFTERTEXTCHANGED: ll:ll:ll:
10-12 17:33:43.148: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll:
10-12 17:33:43.148: D/MainActivity(26025): AFTERTEXTCHANGED: ll:ll:ll
10-12 17:33:43.358: D/MainActivity(26025): FILTER: source: dest: ll:ll:ll
10-12 17:33:43.358: D/MainActivity(26025): AFTERTEXTCHANGED: ll:ll:l
10-12 17:33:43.568: D/MainActivity(26025): FILTER: source: dest: ll:ll:l
10-12 17:33:43.568: D/MainActivity(26025): AFTERTEXTCHANGED: ll:ll:
10-12 17:33:43.768: D/MainActivity(26025): FILTER: source: dest: ll:ll:
10-12 17:33:43.768: D/MainActivity(26025): AFTERTEXTCHANGED: ll:ll
10-12 17:33:43.968: D/MainActivity(26025): FILTER: source: dest: ll:ll
10-12 17:33:43.968: D/MainActivity(26025): AFTERTEXTCHANGED: ll:l
10-12 17:33:44.179: D/MainActivity(26025): FILTER: source: dest: ll:l
10-12 17:33:44.179: D/MainActivity(26025): AFTERTEXTCHANGED: ll:
10-12 17:33:44.369: D/MainActivity(26025): FILTER: source: dest: ll:
10-12 17:33:44.369: D/MainActivity(26025): AFTERTEXTCHANGED: ll
10-12 17:33:44.579: D/MainActivity(26025): FILTER: source: dest: ll
10-12 17:33:44.579: D/MainActivity(26025): AFTERTEXTCHANGED: l
10-12 17:33:44.959: D/MainActivity(26025): FILTER: source: dest: l
10-12 17:33:44.959: D/MainActivity(26025): AFTERTEXTCHANGED:
The question
Did I miss something? Am I using a bad 'hack' witch works on the Nexus, but not on the other phones? Or basically: Why do the androids behave differently and how to prevent this?
Greetings,
Fhnx
PS: Sorry for the long text.