【HarmonyOS】巧用免安装能力分发原子化服务
【前言】
对于原子化服务我们通常的入口是服务中心内搜索相应的服务,然后点击打开我们想要的服务。但是我们都知道的是:原子化服务具有免安装特性,如果我们想在应用推广时直接跳转到相应的原子化服务,而不通过服务中心是不是可行呢。
【思路】
对于HamronyOS常用的跳转方法,在JavaUI中我们会使用startAbility(intent)方法;在ArkUI中我们可以使用featureAbility.startAbilit(want)方式实现页面跳转的功能。对于我们免安装跳转原子化服务的想法系统给大家提供了一个跳转的FLAG:FLAG_INSTALL_ON_DEMAND
@ohos.ability.wantConstant (wantConstant)-Ability框架-接口参考(ArkTS及JS API)-手机、平板、智慧屏和智能穿戴开发-ArkTS API参考-HarmonyOS应用开发
FLAG_INSTALL_WITH_BACKGROUND_MODE |
如果未安装,使用后台模式安装该功能。 |
下面我会对ArkUI和JavaUI两种跳转方法做相应的说明(以华为商城为例),具体的使用步骤如下。
【JavaUI 免安装跳转】
Intent intent=new Intent();Operation operation=new Intent.OperationBuilder().withDeviceId("").withFlags(Intent.FLAG_INSTALL_ON_DEMAND|Intent.FLAG_ABILITY_NEW_MISSION).withBundleName("com.huawei.vmall.shop").withAbilityName("com.huawei.vmall.shop.MainShopAbility").build();intent.setOperation(operation);startAbility(intent);
【ArkUI 免安装跳转】
var str = { "want": { "deviceId": "", "bundleName": "com.huawei.vmall.shop", "abilityName": "com.huawei.vmall.shop.MainShopAbility", "uri": "", "action": "", "flags":wantConstant.Flags.FLAG_INSTALL_ON_DEMAND|wantConstant.Flags.FLAG_ABILITY_NEW_MISSION }, "abilityStartSetting": {}};featureAbility.startAbility(str) .then((data) => { console.info('Operation successful. Data: ' + JSON.stringify(data)) }).catch((error) => { console.error('Operation failed. Cause: ' + JSON.stringify(error));})
【效果】
跳转后原子化服务会自动进行安装,效果如下。在我们有多个应用时,巧妙的使用这种方法就可以给用户推荐不同的原子化服务,极大利用了其免安装的特性。
欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh