ArkUI調用Java PA,使用Java FA的Webview組件
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視圖如下:

構建ets視圖代碼如下:

2.3 ArkUI調用Java PA(Service Ability)機制:

通過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.5 在Service Ability新建內部類WebRemote,繼承RemoteObject,實現IRemoteBroker接口,具體代碼如下:

第一步: 在onRemoteRequest方法中接受ArkUI傳過來的url,通過ZSONObject解析獲取;
第二步: 在獲取到url后,通過Intent對象設置,通過startAbility(intent)啟動到Java FA。
2.6 Java FA的布局和具體的Slice中獲取加載WebView組件:


2.7 在config.json文件中配置網絡訪問權限:

最后的視圖效果是:

文章相關附件可以點擊下面的原文鏈接前往下載
https://harmonyos.51cto.com/resource/1589