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;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.

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; 
} 
...
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
分享
微博
QQ
微信
回复
2024-03-20 00:22:01
相关问题
如何Native释放ArkTS对象
3163浏览 • 1回复 待解决
arktshashmap转为native
1769浏览 • 1回复 待解决
Native释放ArkTS对象的方法
1372浏览 • 1回复 待解决
native如何ArkTS子线程通信
804浏览 • 1回复 待解决
如何Native构建一个ArkTS对象
3134浏览 • 1回复 待解决
ArkTSNative分别如何动态加载SO库
3705浏览 • 1回复 待解决
ArkTSNative如何进行map数据交互
3091浏览 • 1回复 待解决
Native调用ArkTS类函数
1845浏览 • 1回复 待解决
native的log获取不到
2194浏览 • 1回复 待解决
如何Native获取APP版本信息
3029浏览 • 1回复 待解决
TS如何批量传递函数到native
1573浏览 • 1回复 待解决
Native如何获取可操作的文件目录
3182浏览 • 1回复 待解决
Native调用ArkTS的全局普通方法
1911浏览 • 1回复 待解决
Native如何打印char指针
2551浏览 • 1回复 待解决