BTAndroidWebViewSelection icon indicating copy to clipboard operation
BTAndroidWebViewSelection copied to clipboard

Add support for localization

Open mebibou opened this issue 12 years ago • 2 comments

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

mebibou avatar Jun 19 '13 14:06 mebibou

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.

btate avatar Aug 05 '13 19:08 btate

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.

netomin avatar Jul 23 '14 22:07 netomin