【FFH】JSFA调用PA(二) Internal Ability调用方式 原创 精华
JS FA调用Java PA(二)Internal Ability调用方式
- 引言
- JS FA调用Java PA — InternalAbility调用方式
- JS FA端(Internal Ability)
- 1.参数初始化
- 2.FeatureAbility.callAbility(OBJECT)
- 3.FeatureAbility.subscribeAbilityEvent(OBJECT)
- 4.FeatureAbility.unsubscribeAbilityEvent(OBJECT)
- 完整示例
- Java PA端(Internal Ability)
- 代码参考
引言
上一篇文章我们已经了解到了Ability的概念,还有JS FA调用Java PA两种方式,Ability和Internal Ability的区别。
因为刚开始学习,一般是使用Internal Ability比较多,所以我们借助具体参照官方Gitee仓库的示例来一起学习一下Internal Ability
的具体调用方法。
JS FA调用Java PA — InternalAbility调用方式
JS FA端(Internal Ability)
FA端相对PA端比较简单,官方提供的API也只有三个:
- FeatureAbility.callAbility(OBJECT):调用PA能力
- FeatureAbility.subscribeAbilityEvent(OBJECT, Function):订阅PA能力
- FeatureAbility.unsubscribeAbilityEvent(OBJECT):取消订阅PA能力
怎么理解这三个的区别呢?其实很简单,假设我们现在要做一个获取手机电池情况的应用,它具备三个功能分别对应的API如下:
- 获取手机电量———
调用PA能力
- 监听手机电量变化(电量变化就给用户发送通知)———订阅PA能力———
订阅PA能力
- 取消监听手机电量变化———
取消订阅PA能力
这样相信大家大概能理解这几个接口的区别了。
另外提一下,这几个API支持大部分富设备。
注:这三个接口的返回值均为Promise类型,格式为JSON字符串
1.参数初始化
首先我们来看一下参数,虽然官方文档把这三个API的接口参数分成了三部分描述,但是其实参数都一样
,唯一区别就是,FeatureAbility.callAbility的有Data这个请求参数
bundleName:
Ability的包名称,需要与PA端匹配,区分大小写。abilityName:
Ability名称,需要与PA端匹配,区分大小写。messageCode:
Ability操作码(操作码定义PA的业务功能,需要与PA端约定),可以自己设置,不同的码对应着要处理的不同业务。abilityType:
Ability类型,对应PA端不同的实现方式:- 0:Ability调用方式
- 1:Internal Ability调用方式
data:
发送到Ability的数据(根据不同的业务携带相应的业务数据,数据字段名称需要与PA端约定),只有FeatureAbility.callAbility
接口有。syncOption:
PA侧请求消息处理同步/异步选项,非必填
,默认使用同步方式。当前异步方式仅支持AbilityType为Internal Ability类型
。- 0:同步方式,
默认方式
。 - 1:异步方式。
- 0:同步方式,
既然参数都一样,那为什么不统一封装起来,提高代码复用性呢,那第一步是先要封装一个参数初始化函数:
我们在自己的js页面中,先创建一个action对象,初始化好后进行返回。
2.FeatureAbility.callAbility(OBJECT)
我们知道了获取手机电量
这个功能是基于调用PA能力
,下面我们来来看看怎么实现该部分代码
3.FeatureAbility.subscribeAbilityEvent(OBJECT)
接着是监听手机电量变化
:
4.FeatureAbility.unsubscribeAbilityEvent(OBJECT)
最后是取消订阅:
完整示例
具体参照官方Gitee仓库的示例
https://gitee.com/harmonyos/harmonyos_app_samples/tree/master/JSUI/JsCallJava
Java PA端(Internal Ability)
1.导入ohos相关接口包
在java目录下新建一个Ability文件
2.创建一个继承Ability的类
3.封装业务逻辑调用
4.调用onRemoteRequest接口与FA完成交互逻辑
注:该接口返回值为布尔值,操作成功返回true,否则返回false。
5.注册和注销InternalAbility
完整示例
具体参照官方Gitee仓库的示例
https://gitee.com/harmonyos/harmonyos_app_samples/tree/master/JSUI/JsCallJava
代码参考
具体参照官方Gitee仓库的示例
https://gitee.com/harmonyos/harmonyos_app_samples/tree/master/JSUI/JsCallJava
方便大家取到代码,已将源码压缩文件添加至附件
上一篇文章【FFH】JSFA调用PA(一)Ability概念及Ability与Internal Ability
【FFH】JSFA调用PA(三) Ability调用方式