Движок JavaScript, работающий в Android WebView, не поддерживает Uint8Arrays или любые другие типизированные массивы (по состоянию на 2.3.3).
РЕДАКТИРОВАТЬ: я провел еще несколько тестов на симуляторах и у меня естьсмешанные вещи для отчета.
С другой стороны, механизм JavaScript в Android 3.x WebView поддерживает типизированные массивы, за исключением Float64Array.
С минусовой стороны, интерфейс JNIв Java через WebView.addJavascriptInterface () не конвертирует типы вообще.Вот код, который я использовал для его проверки:
var u8arr = new Uint8Array(4);
u8arr.set([2, 3, 5, 7]);
android.log(u8arr);
И функция Java для android.log () выглядит примерно так:
public void log(final int[] data) {
final String dataInfo = (data == null) ? "NULL" : "[" + data.length + "]";
Log.d("JsJni", "data=" + dataInfo);
/* ... */
}
Когда я вызывал android.log сстандартный объект JavaScript типа Array (), я получил бы ожидаемые результаты (массив, связанный с данными, преобразование типов и т. д.). Когда вызывался android.log с объектом Uint8Array (или любым другим типизированным массивом)в этом отношении, включая Int8Array, Int16Array и Int32Array), данные равны null .
То же самое между Android 3.0 и 3.2