11

In the Android JNI binding, you can expose a Java method such as method(int[] intArray) {} to JavaScript, pass it a JavaScript array, and expect the binding to convert that JavaScript array to int[]. Does Android have the same handling for e.g. Uint8Array()?

1
  • 1
    Is Uint8Array even supported in the Android browser? Commented Oct 7, 2011 at 22:14

1 Answer 1

5

The JavaScript engine that runs in Android's WebView does not support Uint8Arrays, or any of the other typed arrays (as of 2.3.3).

EDIT: I did some more testing with the simulators and I have mixed things to report.

On the plus side, the JavaScript engine in Android 3.x's WebView does support typed arrays, with the exception of Float64Array.

On the minus side, the JNI interface to Java via WebView.addJavascriptInterface() does not convert the types at all. This is the code I used to test it:

var u8arr = new Uint8Array(4);
u8arr.set([2, 3, 5, 7]);
android.log(u8arr);

And the Java function for android.log() looks basically like this:

public void log(final int[] data) {
    final String dataInfo = (data == null) ? "NULL" : "[" + data.length + "]";
    Log.d("JsJni", "data=" + dataInfo);
    /* ... */
}

When I called android.log with standard Array() type JavaScript object, I'd get the results one would expect (the array bound to data, type conversion, etc...) When android.log was called with the Uint8Array object (or any of the other typed arrays, for that matter, including Int8Array, Int16Array, and Int32Array), data is null.

It's the same between Android 3.0 and 3.2

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.