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

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

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%')
}
}
四:效果演示



594

被折叠的 条评论
为什么被折叠?



