5

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.

Fhnx
  • 91
  • 7

0 Answers0