鸿蒙开发技能:如何拉起其他应用程序

一:先新建2个项目分别为demo1和demo2

二:准备want参数用于指定跳转应用

使用如下api拉起ability

want中parameters可以传递自定义参数数据

src/main/ets/pages/Index.ets

import Want from '@ohos.app.ability.Want'
import { Context } from '@ohos.abilityAccessCtrl'
import { common } from '@kit.AbilityKit';

@Entry
@Component
struct demo1 {
  want: Want | null = null
  context = this.getUIContext().getHostContext() as common.UIAbilityContext;

  aboutToAppear(): void {

  }

  build() {
    Button('点击拉起应用')
      .onClick(() => {
        this.want = {
          deviceId: '',//空值表示本设备
          bundleName: 'com.example.demo2',//应用包名->app.json5
          moduleName: 'entry',//应用模块名
          abilityName: 'EntryAbility',//应用的ability->在module.json5找
          parameters: {
            keyForInt: 100,
            keyForDouble: 99.99,
          },
        }
        this.context.startAbility(this.want);
      })
  }
}

三:在demo2中接受解析传来的参数并渲染到应用

在ability生命钩子函数中onCreate冷启动中解析,为了方便渲染demo2使用了v2的开发模式(路径src/main/ets/entryability/EntryAbility.ets)


onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
  this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);
  paramsInFo.keyForInt=want.parameters?.keyForInt as number;
  paramsInFo.keyForDouble=want.parameters?.keyForDouble as number
  hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate');
}

src/main/ets/pages/commons.ets 

@ObservedV2
export class InFo {
  @Trace keyForInt: number=0;
  @Trace keyForDouble: number=0
}
export const paramsInFo=new InFo();

 src/main/ets/pages/Index.ets

import { paramsInFo } from './commons';

@Entry
@ComponentV2
struct Index {
  @Local message:string='helloworld';
  build() {
    RelativeContainer() {
      Text(this.message)
        .id('HelloWorld')
        .fontSize($r('app.float.page_text_font_size'))
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
        .onClick(() => {
          this.message = 'Welcome'+paramsInFo.keyForInt+'哈哈哈'+paramsInFo.keyForDouble;
        })
    }
    .height('100%')
    .width('100%')
  }
}

四:效果演示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值