BTAndroidWebViewSelection
BTAndroidWebViewSelection copied to clipboard
Add support for localization
If used on a device that is not in English metrics, float values are represented by commas and not dots, i.e. 302.2 will appear as 302,2 in French for example.
This causes all call to javascript methods with float values to fail, for example:
android.selection.startTouch(100,00000, 20,00000);
A way to make this work in all cases would be to surround floatvalues by single quotes:
android.selection.startTouch('100,00000', '20,00000');
and parse them to float in the javascript methods (parseFloat(value))
Just pushed a change with this in it. I did the string casting in the javascript so it doesn't matter what you send to it. Give it a shot.
Thank you for this great code! I've been looking for long time for something like this.
I did test your code on a Galaxy S3 phone and on a Nexus 7 tablet and in of both devices the selection didn't work. Nevertheless on the emulator the selection worked out.
Then what I figured out is that both devices had locale French and that what was causing trouble was this kind of strings:
String.format("javascript:android.selection.startTouch(%f, %f);", xPoint, yPoint);
If you replace all occurrences of String.format with the alternative using the locale US like this:
String.format(Locale.US, "javascript:android.selection.startTouch(%f, %f);", xPoint, yPoint);
That solved the problem.