ArkUI调用Java PA,使用Java FA的Webview组件

开发 后端
声明式UI开发框架(ArkUI),没有WebView组件,如何从ArkUI从发起调用Java PA从Java的PA跳转到Java的FA,使用Java FA的WebView组件?

[[441027]]

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

1.业务实践背景:

声明式UI开发框架(ArkUI),没有WebView组件,如何从ArkUI从发起调用Java PA从Java的PA跳转到Java的FA,使用Java FA的WebView组件?

2.业务实现逻辑

2.1 建立ets的工程,使用api 7.0 构建;

2.2 ArkUI的初始界面添加onClick点击事件,从ArkUI发起对Java PA(Service Ability)的调用;

UI视图如下:

#星光计划2.0# ArkUI 调用Java  PA,使用Java FA的Webview组件-鸿蒙HarmonyOS技术社区

构建ets视图代码如下:

#星光计划2.0# ArkUI 调用Java  PA,使用Java FA的Webview组件-鸿蒙HarmonyOS技术社区

2.3 ArkUI调用Java PA(Service Ability)机制:

#星光计划2.0# ArkUI 调用Java  PA,使用Java FA的Webview组件-鸿蒙HarmonyOS技术社区

通过FeatureAbility.callAbility({}),呼叫后台定义的Java PA(Service Ability),目前有两种机制可以实现。

方舟开发框架-基于JS扩展的类Web开发范式框架提供了一种FA(JS API)调用PA(Java API)的机制,包含远端调用Ability和本地调用Internal Ability两种方式。

FA提供了以下三个JS接口:

FeatureAbility.callAbility(OBJECT):调用PA能力

FeatureAbility.subscribeAbilityEvent(OBJECT, Function):订阅PA能力

FeatureAbility.unsubscribeAbilityEvent(OBJECT):取消订阅PA能力

JS端与Java端通过接口扩展机制进行通信,通过bundleName和abilityName来进行关联。在FeatureAbility Plugin收到JS调用请求后,系统根据开发者在JS指定的abilityType,Ability或Internal Ability,来选择对应的方式进行处理。开发者在onRemoteRequest()中实现PA提供的业务逻辑,不同的业务通过业务码来区分。

在PA端提供的接口为:

boolean IRemoteObject.onRemoteRequest(int code, MessageParcel data, MessageParcel reply, MessageOption option):Ability方式,与FA通过rpc方式通信,该方式的优点在于PA可以被不同的FA调用。

boolean onRemoteRequest(int code, MessageParcel data, MessageParcel reply, MessageOption option):Internal Ability方式,集成在FA中,适用于与FA业务逻辑关联性强,响应时延要求高的服务。该方式仅支持本FA访问调用。

2.4 在src的Java目录下新建Service Ability,截图如下:

#星光计划2.0# ArkUI 调用Java  PA,使用Java FA的Webview组件-鸿蒙HarmonyOS技术社区

2.5 在Service Ability新建内部类WebRemote,继承RemoteObject,实现IRemoteBroker接口,具体代码如下:

#星光计划2.0# ArkUI 调用Java  PA,使用Java FA的Webview组件-鸿蒙HarmonyOS技术社区

第一步: 在onRemoteRequest方法中接受ArkUI传过来的url,通过ZSONObject解析获取;

第二步: 在获取到url后,通过Intent对象设置,通过startAbility(intent)启动到Java FA。

2.6 Java FA的布局和具体的Slice中获取加载WebView组件:

#星光计划2.0# ArkUI 调用Java  PA,使用Java FA的Webview组件-鸿蒙HarmonyOS技术社区
#星光计划2.0# ArkUI 调用Java  PA,使用Java FA的Webview组件-鸿蒙HarmonyOS技术社区

2.7 在config.json文件中配置网络访问权限:

#星光计划2.0# ArkUI 调用Java  PA,使用Java FA的Webview组件-鸿蒙HarmonyOS技术社区

最后的视图效果是:

#星光计划2.0# ArkUI 调用Java  PA,使用Java FA的Webview组件-鸿蒙HarmonyOS技术社区

文章相关附件可以点击下面的原文链接前往下载

https://harmonyos.51cto.com/resource/1589

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2021-09-10 15:13:41

鸿蒙HarmonyOS应用

2021-10-27 10:05:55

鸿蒙HarmonyOS应用

2022-03-07 14:58:10

ArkUIJS FAJava

2012-12-26 12:41:14

Android开发WebView

2022-06-02 14:27:05

UI框架JS

2021-07-16 09:54:49

鸿蒙HarmonyOS应用

2010-08-04 10:17:17

Android开发WebView组件

2022-07-11 16:26:37

eTS计算鸿蒙

2022-02-24 16:00:59

Ability鸿蒙JS

2022-02-17 21:28:08

AbilityJSFA鸿蒙

2022-02-17 21:19:35

JSFA操作系统鸿蒙

2023-12-29 08:37:59

2022-05-20 10:56:54

AbilityeTS FA调用

2022-07-06 20:24:08

ArkUI计时组件

2022-10-24 14:49:54

ArkUI心电图组件

2022-07-04 16:34:46

流光按钮Stack

2014-09-22 15:14:04

2021-12-20 20:30:48

鸿蒙HarmonyOS应用

2022-10-17 14:36:09

ArkUI虚拟摇杆组件

2022-07-26 14:40:42

ArkUIJS
点赞
收藏

51CTO技术栈公众号