I have next problem:
I try to process input in field, that displayed in browser, for example in text field for search in www.google.com. But for Android 4.1.2 and above that type of fields work with some problems with InputConnection.
- it return null for ic.getExtractedText() however ic.getTextBeforeCursor() return normal value;
- when i use ic.sendKeyEvent() for backspace it doesn't make effect until call ic.endBatchEdit();
But for regular edittext or in Android 2.3.3 it return correct value and delete last character right away, even until endBatchEdit() call;
What's wrong with this and how correct work with this fields?
Thanks.
The link here documents this as a known bug on Android Jellybean.
https://code.google.com/p/android/issues/detail?id=36152#makechanges
I've tried it with several OS versions and the only one with the issue is indeed Jelly Bean.
A possible work-around is to use the getTextBeforeCursor() method, using a reasonably large value as the number of characters to get.
Example to find the cursor position in a text field follows:
//try with getExtractedText
extr=ic.getExtractedText(new ExtractedTextRequest(), 0);
if(extr!=null)
Log.w("Cursor Pos", "OnKey "+extr.selectionStart);
else
{
String s =ic.getTextBeforeCursor(9999, 0).toString();
if (s==null)
//nothing can be obtained
else
Log.w("Cursor Pos", "OnKey "+(s.length()-1));
}