d***@qzintel.com
d***@qzintel.com
  • 发布:2025-12-22 14:51
  • 更新:2025-12-22 15:00
  • 阅读:24

uniapp中创建uts插件,引用aar中接口类如何实现

分类:uni-app

如题,aar中接口类如下
package com.honeywell.rfidservice.rfid;

public interface OnTagReadListener {
void onTagRead(TagReadData[] var1);
}
,我在uts中应该实现方式为:
const onTagReadListener = new (class implements OnTagReadListener {
onTagRead(param0?: Array<TagReadData>): void {
console.log(param0)
// throw new Error("Method not implemented.");
}
}
编译时一直报错,我应该如何写实现方法

报错信息如下
14:50:04.875 ‌‌⁠error: Class '<anonymous>' is not abstract and does not implement abstract member:‌
14:50:04.875 ‌fun onTagRead(p0: Array<(out) TagReadData!>!): Unit‌
14:50:04.875 at uni_modules/um-rfid/utssdk/app-android/index.uts:151:31
14:50:04.875 149|
14:50:04.875 150|
14:50:04.875 151| const onTagReadListener = new (class implements OnTagReadListener {
14:50:04.876 | ^
14:50:04.876 152| onTagRead(param0?: Array<TagReadData>): void {
14:50:04.876 153| console.log(param0)⁠

2025-12-22 14:51 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

该问题请在专业群( uni-app 官方技术交流群 1 ) 咨询

在 UTS 中实现 Android AAR 的 Java 接口时,不能直接使用 TypeScript 的 class implements 语法,因为 UTS 需要通过特定 API 桥接原生接口。正确做法是使用 plus.android.implements 创建代理对象:

// 导入接口类  
const OnTagReadListener = plus.android.importClass("com.honeywell.rfidservice.rfid.OnTagReadListener");  

// 实现接口  
const onTagReadListener = plus.android.implements(  
    "com.honeywell.rfidservice.rfid.OnTagReadListener",  
    {  
        onTagRead: function(data: any[]) {  
            console.log("收到标签数据:", data);  
            // 处理 TagReadData 数组  
        }  
    }  
);

关键点说明:

  1. 必须使用 plus.android.implements:UTS 编译到 Android 时需通过此 API 生成 Java 代理类,直接实现接口会导致编译错误
  2. 参数类型处理:Java 的 TagReadData[] 在 UTS 中对应 any[] 类型(因 UTS 无法直接识别 AAR 中的自定义类)
  3. 避免可选参数:Java 接口方法无 ? 可选修饰,需保持参数完整

操作步骤:

  1. 确保已通过 plus.android.importClass 导入接口
  2. 使用对象字面量定义方法实现(非 class 语法)
  3. 将生成的代理对象传递给需要监听的 Android 方法

参考文档:plus.android.implements API 说明
注意:此方案仅适用于 Android 平台(问题分类明确为安卓),鸿蒙平台需使用 ArkTS 方式实现。

内容为 AI 生成,仅供参考
DCloud_Android_DQQ

DCloud_Android_DQQ

参考这个示例

https://gitcode.com/dcloud/hello-uts/blob/dev/uni_modules/uts-nativepage/utssdk/app-android/index.uts

  • d***@qzintel.com (作者)

    能不能直接指点一下,示例中没有类似的

    2025-12-22 15:18

要回复问题请先登录注册