1e41f4b71Sopenharmony_ci# Starting a UIAbility from the FA Model 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci 4e41f4b71Sopenharmony_ciThis topic describes how the three application components of the FA model start the UIAbility component of the stage model. 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ci## PageAbility Starting a UIAbility 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ciA PageAbility starts a UIAbility in the same way as it starts another PageAbility. 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci```ts 12e41f4b71Sopenharmony_ciimport featureAbility from '@ohos.ability.featureAbility'; 13e41f4b71Sopenharmony_ciimport Want from '@ohos.app.ability.Want'; 14e41f4b71Sopenharmony_ciimport { BusinessError } from '@ohos.base'; 15e41f4b71Sopenharmony_ciimport hilog from '@ohos.hilog'; 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ciconst TAG: string = 'PageInterflowFaAndStage'; 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ciconst domain: number = 0xFF00; 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci@Entry 22e41f4b71Sopenharmony_ci@Component 23e41f4b71Sopenharmony_cistruct PageInterflowFaAndStage { 24e41f4b71Sopenharmony_ci build() { 25e41f4b71Sopenharmony_ci Column() { 26e41f4b71Sopenharmony_ci //... 27e41f4b71Sopenharmony_ci List({ initialIndex: 0 }) { 28e41f4b71Sopenharmony_ci ListItem() { 29e41f4b71Sopenharmony_ci Row() { 30e41f4b71Sopenharmony_ci //... 31e41f4b71Sopenharmony_ci } 32e41f4b71Sopenharmony_ci .onClick(() => { 33e41f4b71Sopenharmony_ci let want: Want = { 34e41f4b71Sopenharmony_ci bundleName: 'ohos.samples.etsclock', 35e41f4b71Sopenharmony_ci abilityName: 'MainAbility' 36e41f4b71Sopenharmony_ci }; 37e41f4b71Sopenharmony_ci featureAbility.startAbility({ want }).then((code) => { 38e41f4b71Sopenharmony_ci hilog.info(domain, TAG, 'Ability verify code: ' + JSON.stringify(code)); 39e41f4b71Sopenharmony_ci }).catch((error: BusinessError) => { 40e41f4b71Sopenharmony_ci hilog.error(domain, TAG, 'Ability failed: ' + JSON.stringify(error)); 41e41f4b71Sopenharmony_ci }); 42e41f4b71Sopenharmony_ci //... 43e41f4b71Sopenharmony_ci }) 44e41f4b71Sopenharmony_ci } 45e41f4b71Sopenharmony_ci //... 46e41f4b71Sopenharmony_ci } 47e41f4b71Sopenharmony_ci //... 48e41f4b71Sopenharmony_ci } 49e41f4b71Sopenharmony_ci //... 50e41f4b71Sopenharmony_ci } 51e41f4b71Sopenharmony_ci} 52e41f4b71Sopenharmony_ci``` 53e41f4b71Sopenharmony_ci 54e41f4b71Sopenharmony_ci 55e41f4b71Sopenharmony_ci## PageAbility Accessing a UIAbility (startAbilityForResult) 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ciDifferent from **startAbility()**, **startAbilityForResult()** obtains the execution result when the UIAbility is destroyed. 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_ciA PageAbility starts a UIAbility through **startAbilityForResult()** in the same way as it starts another PageAbility through **startAbilityForResult()**. 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci 62e41f4b71Sopenharmony_ci```ts 63e41f4b71Sopenharmony_ciimport featureAbility from '@ohos.ability.featureAbility'; 64e41f4b71Sopenharmony_ciimport Want from '@ohos.app.ability.Want'; 65e41f4b71Sopenharmony_ciimport { BusinessError } from '@ohos.base'; 66e41f4b71Sopenharmony_ciimport hilog from '@ohos.hilog'; 67e41f4b71Sopenharmony_ci 68e41f4b71Sopenharmony_ciconst TAG: string = 'PageInterflowFaAndStage'; 69e41f4b71Sopenharmony_ci 70e41f4b71Sopenharmony_ciconst domain: number = 0xFF00; 71e41f4b71Sopenharmony_ci 72e41f4b71Sopenharmony_ci@Entry 73e41f4b71Sopenharmony_ci@Component 74e41f4b71Sopenharmony_cistruct PageInterflowFaAndStage { 75e41f4b71Sopenharmony_ci build() { 76e41f4b71Sopenharmony_ci Column() { 77e41f4b71Sopenharmony_ci //... 78e41f4b71Sopenharmony_ci List({ initialIndex: 0 }) { 79e41f4b71Sopenharmony_ci ListItem() { 80e41f4b71Sopenharmony_ci Row() { 81e41f4b71Sopenharmony_ci //... 82e41f4b71Sopenharmony_ci } 83e41f4b71Sopenharmony_ci .onClick(() => { 84e41f4b71Sopenharmony_ci let want: Want = { 85e41f4b71Sopenharmony_ci bundleName: 'ohos.samples.etsclock', 86e41f4b71Sopenharmony_ci abilityName: 'MainAbility' 87e41f4b71Sopenharmony_ci }; 88e41f4b71Sopenharmony_ci featureAbility.startAbilityForResult({ want }).then((result) => { 89e41f4b71Sopenharmony_ci hilog.info(domain, TAG, 'Ability verify result: ' + JSON.stringify(result)); 90e41f4b71Sopenharmony_ci }).catch((error: BusinessError) => { 91e41f4b71Sopenharmony_ci hilog.error(domain, TAG, 'Ability failed: ' + JSON.stringify(error)); 92e41f4b71Sopenharmony_ci }); 93e41f4b71Sopenharmony_ci }) 94e41f4b71Sopenharmony_ci } 95e41f4b71Sopenharmony_ci //... 96e41f4b71Sopenharmony_ci } 97e41f4b71Sopenharmony_ci //... 98e41f4b71Sopenharmony_ci } 99e41f4b71Sopenharmony_ci //... 100e41f4b71Sopenharmony_ci } 101e41f4b71Sopenharmony_ci} 102e41f4b71Sopenharmony_ci``` 103e41f4b71Sopenharmony_ci 104e41f4b71Sopenharmony_ci 105e41f4b71Sopenharmony_ci## ServiceAbility or DataAbility Starting a UIAbility 106e41f4b71Sopenharmony_ci 107e41f4b71Sopenharmony_ciA ServiceAbility or DataAbility starts a UIAbility in the same way as it starts a PageAbility. 108e41f4b71Sopenharmony_ci 109e41f4b71Sopenharmony_ci 110e41f4b71Sopenharmony_ci```ts 111e41f4b71Sopenharmony_ciimport type common from '@ohos.app.ability.common'; 112e41f4b71Sopenharmony_ciimport particleAbility from '@ohos.ability.particleAbility'; 113e41f4b71Sopenharmony_ciimport type Want from '@ohos.app.ability.Want'; 114e41f4b71Sopenharmony_ciimport type { BusinessError } from '@ohos.base'; 115e41f4b71Sopenharmony_ciimport hilog from '@ohos.hilog'; 116e41f4b71Sopenharmony_ci 117e41f4b71Sopenharmony_ciconst TAG: string = '[Sample_FAModelAbilityDevelop]'; 118e41f4b71Sopenharmony_ci 119e41f4b71Sopenharmony_ciconst domain: number = 0xFF00; 120e41f4b71Sopenharmony_ci 121e41f4b71Sopenharmony_ciclass ServiceAbilityStartUiAbility { 122e41f4b71Sopenharmony_ci onStart(): void { 123e41f4b71Sopenharmony_ci // Start the UIAbility. 124e41f4b71Sopenharmony_ci let want: Want = { 125e41f4b71Sopenharmony_ci bundleName: 'ohos.samples.etsclock', 126e41f4b71Sopenharmony_ci abilityName: 'MainAbility' 127e41f4b71Sopenharmony_ci }; 128e41f4b71Sopenharmony_ci particleAbility.startAbility({ want }).then(() => { 129e41f4b71Sopenharmony_ci hilog.info(domain, TAG, 'ServiceAbilityStartUIAbility Start Ability successfully.'); 130e41f4b71Sopenharmony_ci }).catch((error: BusinessError) => { 131e41f4b71Sopenharmony_ci hilog.info(domain, TAG, 'ServiceAbilityStartUIAbility Ability failed: ' + JSON.stringify(error)); 132e41f4b71Sopenharmony_ci }); 133e41f4b71Sopenharmony_ci } 134e41f4b71Sopenharmony_ci}; 135e41f4b71Sopenharmony_ci 136e41f4b71Sopenharmony_ciexport default new ServiceAbilityStartUiAbility(); 137e41f4b71Sopenharmony_ci``` 138