Как передать ByteArray в качестве параметра для функции, используя J2V8 - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь использовать библиотеку J2V8 на Android для вызова функции javascript и передачи ей параметра. Ниже приведен код, который я имею, но не могу понять, как передать массив байтов bytes в вызываемую функцию.

private fun decodePbfBytes(bytes: ByteArray?){
    val params = arrayOf(bytes)
    val v8 = V8.createV8Runtime()
    var v8Array = V8Array(v8) //how do I add bytes to this?
    val fileContents = MyApp.sharedInstance.assets.open("pbfIndex.js").bufferedReader().use { it.readText() }
    v8.executeScript(fileContents)
    val result = v8.executeStringFunction("", v8Array)
}

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

В качестве временного решения, хотя и очень наивного, я преобразовал байтовый массив в строку чисел, разделенных запятыми, а затем разделил их в js в байтовый массив. Грубый размер передаваемых данных увеличивается в несколько раз. Но пока это работает, и я могу двигаться вперед со всем остальным.

0 голосов
/ 27 февраля 2020

Попробуйте:

var buffer = V8ArrayBuffer(bytes, bytes.size)
var v8Array = V8TypedArray(v8, bytes, V8Value.BYTE, 0, 2)
V8Array(v8).add("v8Array", v8Array)

или

...
V8Array(v8).push( v8Array)
...