1# Starting a PageAbility from the Stage Model 2 3 4This topic describes how the two application components of the stage model start the PageAbility component of the FA model. 5 6 7## UIAbility Starting a PageAbility 8 9A UIAbility starts a PageAbility in the same way as it starts another UIAbility. 10 11> **NOTE** 12> 13> In the FA model, **abilityName** consists of **bundleName** and **AbilityName**. For details, see the code snippet below. 14 15```ts 16import UIAbility from '@ohos.app.ability.UIAbility'; 17import AbilityConstant from '@ohos.app.ability.AbilityConstant'; 18import Want from '@ohos.app.ability.Want'; 19import window from '@ohos.window'; 20import { BusinessError } from '@ohos.base'; 21 22export default class EntryAbility extends UIAbility { 23 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { 24 console.info("EntryAbility onCreate") 25 } 26 onDestroy() { 27 console.info("EntryAbility onDestroy") 28 } 29 onWindowStageCreate(windowStage: window.WindowStage) { 30 console.info("EntryAbility onWindowStageCreate") 31 windowStage.loadContent('pages/Index', (err, data) => { 32 // ... 33 }); 34 let want: Want = { 35 bundleName: "com.ohos.fa", 36 abilityName: "com.ohos.fa.EntryAbility", 37 }; 38 this.context.startAbility(want).then(() => { 39 console.info('Start Ability successfully.'); 40 }).catch((error: BusinessError) => { 41 console.error("Ability failed: " + JSON.stringify(error)); 42 }); 43 } 44 onWindowStageDestroy() { 45 console.info("EntryAbility onWindowStageDestroy") 46 } 47 onForeground() { 48 console.info("EntryAbility onForeground") 49 } 50 onBackground() { 51 console.info("EntryAbility onBackground") 52 } 53} 54``` 55 56 57## UIAbility Accessing a PageAbility (startAbilityForResult) 58 59Different from **startAbility()**, **startAbilityForResult()** obtains the execution result when the PageAbility is destroyed. 60 61A UIAbility starts a PageAbility through **startAbilityForResult()** in the same way as it starts another UIAbility through **startAbilityForResult()**. 62 63 64```ts 65import UIAbility from '@ohos.app.ability.UIAbility'; 66import AbilityConstant from '@ohos.app.ability.AbilityConstant'; 67import Want from '@ohos.app.ability.Want'; 68import window from '@ohos.window'; 69import { BusinessError } from '@ohos.base'; 70 71export default class EntryAbility extends UIAbility { 72 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { 73 console.info("EntryAbility onCreate") 74 } 75 onDestroy() { 76 console.info("EntryAbility onDestroy") 77 } 78 onWindowStageCreate(windowStage: window.WindowStage) { 79 console.info("EntryAbility onWindowStageCreate") 80 windowStage.loadContent('pages/Index', (err, data) => { 81 // ... 82 }); 83 let want: Want = { 84 bundleName: "com.ohos.fa", 85 abilityName: "EntryAbility", 86 }; 87 this.context.startAbilityForResult(want).then((result) => { 88 console.info('Ability verify result: ' + JSON.stringify(result)); 89 }).catch((error: BusinessError) => { 90 console.error("Ability failed: " + JSON.stringify(error)); 91 }); 92 } 93 onWindowStageDestroy() { 94 console.info("EntryAbility onWindowStageDestroy") 95 } 96 onForeground() { 97 console.info("EntryAbility onForeground") 98 } 99 onBackground() { 100 console.info("EntryAbility onBackground") 101 } 102} 103``` 104 105 106## ExtensionAbility Starting a PageAbility 107 108The following uses the ServiceExtensionAbility component as an example to describe how an ExtensionAbility starts a PageAbility. A ServiceExtensionAbility starts a PageAbility in the same way as it starts a UIAbility. 109 110 111```ts 112import Extension from '@ohos.app.ability.ServiceExtensionAbility' 113import Want from '@ohos.app.ability.Want'; 114import { BusinessError } from '@ohos.base'; 115 116export default class ServiceExtension extends Extension { 117 onCreate(want: Want) { 118 console.info("ServiceExtension onCreate") 119 } 120 onDestroy() { 121 console.info("ServiceExtension onDestroy") 122 } 123 onRequest(want: Want, startId: number) { 124 console.info("ServiceExtension onRequest") 125 let wantFA: Want = { 126 bundleName: "com.ohos.fa", 127 abilityName: "EntryAbility", 128 }; 129 this.context.startAbility(wantFA).then(() => { 130 console.info('Start Ability successfully.'); 131 }).catch((error: BusinessError) => { 132 console.error("Ability failed: " + JSON.stringify(error)); 133 }); 134 } 135} 136``` 137