1# @ohos.app.ability.PhotoEditorExtensionAbility (Image Editing)
2The PhotoEditorExtensionAbility, which inherits from the ExtensionAbility, enables your application to provide an image editing page for applications that do not have the image editing capability. After an application uses **startAbilityByType** to start a vertical domain panel with available image editing applications that have implemented the PhotoEditorExtensionAbility, the user can select one of the applications on the panel to display an image editing page.
3> **NOTE**
4>
5> The initial APIs of this module are supported since API version 12. Newly added APIs will be marked with a superscript to indicate their earliest API version.
6>
7> The APIs of this module can be used only in the stage model.
8## Modules to Import
9```ts
10import { PhotoEditorExtensionAbility } from '@kit.AbilityKit';
11```
12## Properties
13**System capability**: SystemCapability.Ability.AppExtension.PhotoEditorExtension
14|  Name|Type  |Read Only  |Optional  |Description  |
15| ------------ | ------------ | ------------ | ------------ | ------------ |
16|  context | [PhotoEditorExtensionContext](./js-apis-app-ability-photoEditorExtensionContext.md)  | No | Yes | Context. |
17
18## PhotoEditorExtensionAbility.onCreate
19onCreate(): void
20
21Called to initialize the service logic when a PhotoEditorExtensionAbility is created.
22
23**Model restriction**: This API can be used only in the stage model.
24
25**System capability**: SystemCapability.Ability.AppExtension.PhotoEditorExtension
26
27**Example**
28
29```ts
30import { PhotoEditorExtensionAbility } from '@kit.AbilityKit';
31
32const TAG: string = '[testTag] ExamplePhotoEditorAbility';
33
34export default class ExamplePhotoEditorAbility extends PhotoEditorExtensionAbility {
35  onCreate() {
36    console.info(TAG, `onCreate`);
37  }
38}
39
40```
41## PhotoEditorExtensionAbility.onStartContentEditing
42onStartContentEditing(uri: string, want: Want, session: UIExtensionContentSession): void
43
44Called when a **UIExtensionContentSession** instance is created for this PhotoEditorExtensionAbility. The instance can be used to read the original image and load a page.
45
46**Model restriction**: This API can be used only in the stage model.
47
48**System capability**: SystemCapability.Ability.AppExtension.PhotoEditorExtension
49
50**Parameters**
51| Name|  Type| Mandatory | Description |
52| ------------ | ------------ | ------------ | ------------ |
53|  uri |  string |  Yes| [URI](../apis-core-file-kit/js-apis-file-fileuri.md) of the image to edit. The format is file://\<bundleName>/\<sandboxPath>. |
54| want  | [Want](./js-apis-app-ability-want.md)  | Yes | Want information, including the ability name and bundle name. |
55|  session |  [UIExtensionContentSession](./js-apis-app-ability-uiExtensionContentSession.md) | Yes |  UI content information related to the PhotoEditorExtensionAbility.|
56
57
58**Example**
59
60```ts
61import { PhotoEditorExtensionAbility, Want, UIExtensionContentSession } from '@kit.AbilityKit';
62
63const TAG: string = '[testTag] ExamplePhotoEditorAbility';
64
65export default class ExamplePhotoEditorAbility extends PhotoEditorExtensionAbility {
66  onStartContentEditing(uri: string, want: Want, session: UIExtensionContentSession) {
67    console.info(TAG, `onStartContentEditing want: ${JSON.stringify(want)}, uri: ${uri}`);
68  }
69}
70
71```
72## PhotoEditorExtensionAbility.onForeground
73onForeground(): void
74
75Called when this PhotoEditorExtensionAbility is switched from the background to the foreground.
76
77**Model restriction**: This API can be used only in the stage model.
78
79**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
80
81**Example**
82
83```ts
84import { PhotoEditorExtensionAbility } from '@kit.AbilityKit';
85
86const TAG: string = '[testTag] ExamplePhotoEditorAbility';
87
88export default class ExamplePhotoEditorAbility extends PhotoEditorExtensionAbility {
89  onForeground() {
90    console.info(TAG, `onForeground`);
91  }
92}
93
94```
95## PhotoEditorExtensionAbility.onBackground
96onBackground(): void
97
98Called when this PhotoEditorExtensionAbility is switched from the foreground to the background.
99
100**Model restriction**: This API can be used only in the stage model.
101
102**System capability**: SystemCapability.Ability.AbilityRuntime.AbilityCore
103
104**Example**
105
106```ts
107import { PhotoEditorExtensionAbility } from '@kit.AbilityKit';
108
109const TAG: string = '[testTag] ExamplePhotoEditorAbility';
110
111export default class ExamplePhotoEditorAbility extends PhotoEditorExtensionAbility {
112  onBackground() {
113    console.info(TAG, `onBackground`);
114  }
115}
116
117```
118## PhotoEditorExtensionAbility.onDestroy
119onDestroy(): void | Promise\<void>
120
121Called to clear resources when this PhotoEditorExtensionAbility is destroyed.
122
123**Model restriction**: This API can be used only in the stage model.
124
125**System capability**: SystemCapability.Ability.AppExtension.PhotoEditorExtension
126
127**Return value**
128|  Type|Description  |
129| ------------ | ------------ |
130|  Promise\<void> |  Promise that returns no value.|
131
132**Example**
133
134```ts
135import { PhotoEditorExtensionAbility } from '@kit.AbilityKit';
136
137const TAG: string = '[testTag] ExamplePhotoEditorAbility';
138
139export default class ExamplePhotoEditorAbility extends PhotoEditorExtensionAbility {
140  onDestroy() {
141    console.info(TAG, `onDestroy`);
142  }
143}
144
145```
146