Native侧如何获取ArkTS侧Object对象及其成员变量-鸿蒙开发者社区-51CTO.COM

Native侧如何获取ArkTS侧Object对象及其成员变量

Native侧如何获取ArkTS侧Object对象及其成员变量

HarmonyOS
2024-03-19 16:34:43
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
宇宙无敌超英俊

在ArkTS侧定义类,传递类到Native侧调用类函数。详情见示例代码。

ArkTS侧

// index.ets 
import testNapi from 'libentry.so'; 
import { promptAction } from '@kit.ArkUI'; 
 
class A { 
  name:string ='username' 
  onCall() { 
    promptAction.showToast({ 
      message:'Message Info', 
      duration:2000 
    }); 
    console.log("testTag user onCall"); 
  } 
} 
build() { 
... 
  .onClick(() => { 
    testNapi.callFunction(new A()); 
  }) 
}
// index.d.ts 
export const callFunction: (a:object) => void;

Native侧

// 传入实例对象,在C++侧调用对象中的函数 
#include "napi/native_api.h" 
static napi_value CallFunction(napi_env env, napi_callback_info info) { 
    // 获取实例对象 
    size_t argc = 1; 
    napi_value args[1] = {nullptr}; 
    napi_get_cb_info(env, info, &argc, args, NULL, NULL); 
    // 获取对象的方法 
    napi_value onCall; 
    napi_get_named_property(env, args[0], "onCall", &onCall); 
    // 调用对象中的函数 
    napi_value res; 
    napi_call_function(env, args[0], onCall, 0, nullptr, &res); 
    return onCall; 
} 
EXTERN_C_START 
static napi_value Init(napi_env env, napi_value exports) { 
    napi_property_descriptor desc[] = { 
        {"callFunction", nullptr, CallFunction, nullptr, nullptr, nullptr, napi_default, nullptr}}; 
    napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc); 
    return exports; 
} 
...
分享
微博
QQ
微信
回复
2024-03-20 00:22:01
相关问题
如何Native释放ArkTS对象
2288浏览 • 1回复 待解决
arktshashmap转为native
892浏览 • 1回复 待解决
Native释放ArkTS对象的方法
409浏览 • 1回复 待解决
如何Native构建一个ArkTS对象
2059浏览 • 1回复 待解决
ArkTSNative分别如何动态加载SO库
2366浏览 • 1回复 待解决
ArkTSNative如何进行map数据交互
2164浏览 • 1回复 待解决
Native调用ArkTS类函数
906浏览 • 1回复 待解决
native的log获取不到
1575浏览 • 1回复 待解决
如何Native获取APP版本信息
2248浏览 • 1回复 待解决
TS如何批量传递函数到native
905浏览 • 1回复 待解决
Native如何获取可操作的文件目录
1957浏览 • 1回复 待解决
Native如何打印char指针
1743浏览 • 1回复 待解决
Native调用ArkTS的全局普通方法
839浏览 • 1回复 待解决
native如何使用类的静态方法
755浏览 • 1回复 待解决
native如何调用类的静态方法?
1046浏览 • 1回复 待解决
Native进行跨模块加载
757浏览 • 1回复 待解决