HarmonyOS 鸿蒙Next中使用ese出现3300103错误
HarmonyOS 鸿蒙Next中使用ese出现3300103错误 我想开发的APP,可以使用ese进行刷卡,代码片段如下:
await omapi.createService().then((data) => {
if (data == undefined || !data.isConnected()) {
hilog.error(0x0000, 'testTag', 'secure element service disconnected.');
return;
}
seService = data;
hilog.info(0x0000, 'testTag', 'secure element service connected.');
}).catch((error: BusinessError) => {
hilog.error(0x0000, 'testTag', 'createService error %{public}s', JSON.stringify(error));
return;
});
// 获取读卡器
try {
seReaders = seService.getReaders();
} catch (error) {
hilog.error(0x0000, 'testTag', 'getReaders error %{public}s', JSON.stringify(error));
}
if (seReaders == undefined || seReaders.length == 0) {
hilog.error(0x0000, 'testTag', 'no valid reader found.');
seService.shutdown();
return;
}
let reader: (omapi.Reader | undefined);
for (let i = 0; i < seReaders.length; ++i) {
let r = seReaders[i];
hilog.info(0x00, "testTag", "==== " + r.getName());
if (!r.getName().includes('SIM')) {
reader = r;
break;
}
}
if (reader == undefined) {
hilog.error(0x0000, 'testTag', 'no valid sim reader.');
return;
}
hilog.info(0x0000, 'testTag', 'reader is %{public}s', reader?.getName());
// 获取会话
try {
seSession = reader?.openSession() as omapi.Session;
} catch (error) {
hilog.error(0x0000, 'testTag', 'openSession error %{public}s', JSON.stringify(error));
}
if (seSession == undefined) {
hilog.error(0x0000, 'testTag', 'seSession invalid.');
seService.shutdown();
return;
}
// 获取通道
try {
// 修改此处的aid值以打开逻辑通道。
seChannel = await seSession.openLogicalChannel(aidArray, p2);
// seChannel = await seSession.openBasicChannel(aidArray, p2);
} catch (exception) {
hilog.error(0x0000, 'testTag', 'openLogicalChannel exception %{public}s', JSON.stringify(exception));
}
现在返回
openLogicalChannel exception {"code":3300103,"data":""}
官方文档解释为:
3300103 无法获取访问控制规则异常
支持设备Phone
错误信息
SecurityError, the calling application cannot be granted access to this AID or the default applet on this session.
错误描述
无法获取访问控制规则异常。
可能原因
- 安全单元上没有应用所依赖的访问规则。
处理步骤
- 写入正确的访问规则到安全单元上。
- 关闭SE服务后重新建立连接。
这个不是很理解,应该如何解决,还是三方应用没有这个权限?
更多关于HarmonyOS 鸿蒙Next中使用ese出现3300103错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3300103报错表示无法获取访问控制规则异常,根据sim卡安全单元在被应用访问前需要在安全单元上设置访问规则。解决步骤:
- 写入正确的访问规则到安全单元上;一般是由sim卡厂家设置,不涉及HarmonyOS代码。
- 关闭SE服务后重新建立连接。
更多关于HarmonyOS 鸿蒙Next中使用ese出现3300103错误的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
没设置成 release 打包?
参考:安全单元访问开发指南-NFC-Connectivity Kit(短距通信服务)-网络-系统 - 华为HarmonyOS开发者
[@ohos.secureElement (安全单元的通道管理)-ArkTS API-Connectivity Kit(短距通信服务)-网络-系统 - 华为HarmonyOS开发者](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-secureelement)
在HarmonyOS Next中,使用eSE(嵌入式安全元件)出现3300103错误通常表示安全环境初始化失败。该错误可能由于eSE硬件未正常启动、驱动加载异常或安全服务未正确配置导致。建议检查设备eSE硬件状态、系统日志中相关错误信息,并确认系统版本与eSE服务的兼容性。
错误代码3300103表示应用无法获取对指定AID的访问权限,通常是由于安全单元(SE)上的访问控制规则(ACR)缺失或配置不当导致的。根据您的代码,问题可能出现在openLogicalChannel
调用时,系统无法验证当前应用对目标AID的访问权限。
请检查以下几点:
- 确保设备上的安全单元已正确配置访问规则,特别是与您使用的AID相关的规则。
- 确认AID值(
aidArray
)是否正确,且与安全单元中预配置的规则匹配。 - 如果使用的是逻辑通道,确保应用具有访问该AID的权限,可能需要检查签名或权限配置。
建议重新配置安全单元的访问规则,或联系相关硬件提供商确认ACR设置。完成后重启SE服务并重试。