HarmonyOS 鸿蒙Next Native如何通过napi获取ArrayBuffer

HarmonyOS 鸿蒙Next Native如何通过napi获取ArrayBuffer 需要从JS层读取rawfile转换成arraybuffer,然后传到native,应该用napi的哪个方法获取到arraybuffer呢?

尝试使用过napi_get_arraybuffer_info,得到的data是个空值,请问大佬怎么搞?

5 回复

//cpp端

napi_value GetArray(napi_env env, napi_callback_info info) {
    napi_status status;
    size_t requireArgc = 1;
    size_t argc = 1;
    napi_value args[1] = {nullptr};

    napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);

    // 确保传入的参数是数组
    napi_valuetype valuetype;
    status = napi_typeof(env, args[0], &valuetype);
    if (status != napi_ok) {
        napi_throw_error(env, NULL, "Failed to get typeof value");
        return nullptr;
    }

    if (valuetype != napi_object) {
        napi_throw_type_error(env, NULL, "Expected an array");
        return nullptr;
    }

    napi_value buff = args[0];

    status = napi_typeof(env, buff, &valuetype);

    bool isArrayBuff = 0;
    if (valuetype == napi_object) {
        status = napi_is_typedarray(env, buff, &isArrayBuff);
    }
    
    char *buff_data = nullptr;
    size_t byte_length = 0;
    char *pszBuf = nullptr;
    //获取长度与元素 
    napi_typedarray_type typedarray_type;
    napi_value array;
    size_t offset;
    napi_get_typedarray_info(env, buff, &typedarray_type, &byte_length, (void **)&buff_data, &array, &offset);
    pszBuf = new char [byte_length + 1];

    for (int i = 0; i < byte_length; ++i) {
        pszBuf[i] = buff_data[i];
    }


    napi_value jsRet;
    napi_create_int32(env, 0, &jsRet);
    return jsRet;
}

//index.d.ts 类型定义

export const getArray: (byContent:Uint8Array) => number;

//js调用端:

Button("测试 数组传递")
  .margin({top:5})
  .width('80%')
  .onClick( () => {
    let contents:Uint8Array = new StringUtils().stringToUint8Array("12345678中文在这hello12345678")
     sho.getArray(contents)

  })

更多关于HarmonyOS 鸿蒙Next Native如何通过napi获取ArrayBuffer的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我读到也是空的,demo里面没有

很喜歡HarmonyOS的卡片式設計,信息一目了然,操作也更便捷。

您好,napi的使用参考demo:

[https://gitee.com/openharmony/arkui_napi/tree/master/sample](https://gitee.com/openharmony/arkui_napi/tree/master/sample)

姓名: 张三

回到顶部