男儿欲遂平生志,六经勤向窗前读。这篇文章主要讲述HarmonyOSArkUI 鸿蒙 ets怎么调用PA相关的知识,希望能为你提供帮助。
【问题描述】
文档描述了js调用pa案例,没有ets调用pa用例?接下来就是ets怎么调用pa
参考文档链接
??https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-apis-fa-calls-pa-featureability-0000000000617992??
【解决方案】
第一步:新建pa的Ability(目前命名为MyServiceAbility)
参考资料链接
??https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-apis-fa-calls-pa-examples-0000000000618000??
代码如下
// ohos相关接口包
public class ComputeInternalAbility extends AceInternalAbility
private static final String BUNDLE_NAME = "com.harmony.alliance.myets";
private static final String ABILITY_NAME = "com.harmony.alliance.myets.ComputeInternalAbility";
private static final int SUCCESS = 0;
private static final int ERROR = 1;
private static final int PLUS = 1001;
// 定义日志标签
private static final HiLogLabel LABEL = new HiLogLabel(HiLog.LOG_APP, 0, "MY_TAG");
private static ComputeInternalAbility instance;
private AbilityContext abilityContext;
// 如果多个Ability实例都需要注册当前InternalAbility实例,需要更改构造函数,设定自己的bundleName和abilityName
public ComputeInternalAbility()
super(BUNDLE_NAME, ABILITY_NAME);
/**
* Internal ability 注册接口。
*/
public static void register(AbilityContext abilityContext)
instance = new ComputeInternalAbility();
instance.onRegister(abilityContext);
/**
* Internal ability 注销接口。
*/
public static void unregister()
instance.onUnregister();
public boolean onRemoteRequest(int code, MessageParcel data, MessageParcel reply, MessageOption option)
switch (code)
case PLUS:
System.err.println("app log pa得到ets数据"+data.readString());
Map<
String, Object>
result = new HashMap<
String, Object>
();
result.put("code", SUCCESS);
result.put("abilityResult", "Pa data");
MessageParcel responseData = https://www.songbingjia.com/android/MessageParcel.obtain();
responseData.writeString(ZSONObject.toZSONString(result));
IRemoteObject remoteReply = reply.readRemoteObject();
try
remoteReply.sendRequest(0, responseData, MessageParcel.obtain(), new MessageOption());
catch (RemoteException exception)
return false;
finally
responseData.reclaim();
break;
default:
Map<
String, Object>
result = new HashMap<
String, Object>
();
result.put("abilityError", ERROR);
reply.writeString(ZSONObject.toZSONString(result));
return false;
return true;
private void onRegister(AbilityContext abilityContext)
this.abilityContext = abilityContext;
this.setInternalAbilityHandler((code, data, reply, option) ->
return this.onRemoteRequest(code, data, reply, option);
);
private void onUnregister()
abilityContext = null;
this.setInternalAbilityHandler(null);
【HarmonyOSArkUI 鸿蒙 ets怎么调用PA】第二步 查看config.json是否abilities是否该Pa配置文件
第三步 书写MainAbility的onStart()和onStop()代码 代码如下
package com.harmony.alliance.myets;
import ohos.ace.ability.AceAbility;
import ohos.aafwk.content.Intent;
import ohos.security.SystemPermission;
public class MainAbility extends AceAbility
@Override
public void onStart(Intent intent)
ComputeInternalAbility.register(this);
super.onStart(intent);
@Override
public void onStop()
ComputeInternalAbility.unregister();
super.onStop();
SampleJSInterface.getInstance().deregister(this);
第四步 书写ets文件
@Entry
@Component
struct MyService
build()
Flex( direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center )
Text(ets调用pa)
.fontSize(50)
.onClick(function ()
FeatureAbility.callAbility(
bundleName: com.harmony.alliance.myets,
abilityName: com.harmony.alliance.myets.ComputeInternalAbility,
messageCode: 1001,
abilityType: 1,
data:firstNum: 1, secondNum: 2 ,
syncOption: 0
).then((data) =>
console.log(pa传递给ets的数据+ data);
)
)
.fontWeight(FontWeight.Bold)
.
推荐阅读
- 华为联运游戏审核驳回(在未安装或需更新HMS Core的手机上,提示安装,点击取消后,游戏卡屏(集成的6.1.0.301版本游戏SDK))
- HarmonyOSJS鸿蒙Js camera怎么拍照并使用image显示出来
- 如何在Xamarin中快速集成Android版认证服务-邮箱地址篇
- 超简单集成华为HMS MLKit 机器学习服务 银行卡识别SDK,一键实现银行卡绑定
- 超简单集成HMS ML Kit实现最大脸微笑抓拍
- 全网对 STP 生成树协议最全面最优质的总结,网络工程师收藏!
- Linux磁盘管理之(逻辑卷从概念到应用的最佳实践,)
- Harmony OSArkUIDemo关系数据库基本使用
- 版本集成之SVN版本库同步工具:svnsync