btate / BTAndroidWebViewSelection

Example user selection for android web views.
313 stars 126 forks source link

Add support for localization #16

Open mebibou opened 11 years ago

mebibou commented 11 years ago

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))

btate commented 11 years ago

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.

netomin commented 10 years ago

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.