Native如何调ArkTS的方法

Native如何调ArkTS的方法

HarmonyOS
2024-03-19 16:22:37
2766浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
莫莫莫小贝

1.在index.d.ts文件中,提供ArkTS侧的接口方法。

export const nativeCallArkTS: (a: number) => number;
  • 1.

2. 实现Native侧的NativeCallArkTS接口,具体代码如下:

static napi_value NativeCallArkTS(napi_env env, napi_callback_info info) 
{     
    size_t argc = 1; 
    // 声明参数数组 
    napi_value args[1] = { nullptr }; 
 
    // 获取传入的参数并依次放入参数数组中 
    napi_get_cb_info(env, info, &argc, args , nullptr, nullptr); 
 
    // 创建一个int,作为ArkTS的入参 
    napi_value argv = nullptr;     
    napi_create_int32(env, 2, &argv ); 
 
    // 调用传入的callback,并将其结果返回 
    napi_value result = nullptr; 
    napi_call_function(env, nullptr, args[0], 1, &argv, &result); 
    return result; 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.

3. 在ArkTS侧,通过nativeModule.nativeCallArkTS()方法传入方法。

// entry/src/main/ets/pages/Index.ets 
// 通过import的方式,引入Native能力。 
import nativeModule from 'libentry.so' 
 
@Entry 
@Component 
struct Index { 
  @State message: string = 'Test Node-API nativeCallArkTS result: '; 
  build() { 
    Row() { 
      Column() { 
        // 调用nativeCallArkTS方法,对应到Native的NativeCallArkTS,在Native调用ArkTS function。 
        Text(this.message) 
          .fontSize(50) 
          .fontWeight(FontWeight.Bold) 
          .onClick(() => { 
            this.message += nativeModule.nativeCallArkTS((a: number)=> { 
                return a * 2; 
            }); 
          }) 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
分享
微博
QQ
微信
回复
2024-03-19 23:56:13
相关问题
Native侧释放ArkTS对象方法
1372浏览 • 1回复 待解决
Native侧调用ArkTS全局普通方法
1911浏览 • 1回复 待解决
HarmonyOS native怎样调用ArkTS自定义方法
946浏览 • 1回复 待解决
HarmonyOS ArkTSC++ 偶现方法找不到。
1372浏览 • 1回复 待解决
har如何导出native方法
1220浏览 • 1回复 待解决
native如何使用类静态方法
1361浏览 • 1回复 待解决
native如何调用类静态方法
1696浏览 • 1回复 待解决
HarmonyOS ipc native无法
1007浏览 • 1回复 待解决
如何Native侧释放ArkTS对象
3163浏览 • 1回复 待解决
TextInputonBlur方法不回
2040浏览 • 1回复 待解决
HarmonyOS ArkTS接口回案例
1496浏览 • 1回复 待解决
ArkTSNative如何动态加载、卸载so
2963浏览 • 1回复 待解决
HarmonyOS 点击事件方法
1055浏览 • 1回复 待解决