• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.app.ability.DriverExtensionAbility (DriverExtensionAbility)
2
3The **DriverExtensionAbility** module provides the ExtensionAbility related to drivers. It provides lifecycle callbacks to be invoked when a driver is created, destroyed, connected, or disconnected.
4
5> **NOTE**
6>
7> - The initial APIs of this module are supported since API version 10. Newly added APIs will be marked with a superscript to indicate their earliest API version.
8> - The APIs of this module can be used only in the stage model.
9
10## Modules to Import
11
12```ts
13import DriverExtension from '@ohos.app.ability.DriverExtensionAbility';
14```
15
16## Required Permissions
17
18None.
19
20## Attributes
21
22**System capability**: SystemCapability.Driver.ExternalDevice
23
24
25| Name| Type| Readable| Writable| Description|
26| -------- | -------- | -------- | -------- | -------- |
27| context | [DriverExtensionContext](js-apis-inner-application-driverExtensionContext.md)  | Yes| No| Context of the **DriverExtension**. This context is inherited from **ExtensionContext**.|
28
29
30## DriverExtensionAbility.onInit
31
32onInit(want: Want): void;
33
34Called when a DriverExtensionAbility is created to initialize the service logic.
35
36**System capability**: SystemCapability.Driver.ExternalDevice
37
38**Parameters**
39
40| Name| Type| Mandatory| Description|
41| -------- | -------- | -------- | -------- |
42| want |  [Want](js-apis-app-ability-want.md) | Yes| Want information related to this DriverExtensionAbility, including the ability name and bundle name.|
43
44**Example**
45
46  ```ts
47  import DriverExtension from '@ohos.app.ability.DriverExtensionAbility';
48  import Want from '@ohos.app.ability.Want';
49  class DriverExt extends DriverExtension {
50    onInit(want : Want) {
51      console.log('onInit, want: ${want.abilityName}');
52    }
53  }
54  ```
55
56
57## DriverExtensionAbility.onRelease
58
59onRelease(): void;
60
61Called when this DriverExtensionAbility is destroyed to clear resources.
62
63**System capability**: SystemCapability.Driver.ExternalDevice
64
65**Example**
66
67  ```ts
68  class DriverExt extends DriverExtension {
69    onRelease() {
70      console.log('onRelease');
71    }
72  }
73  ```
74
75
76## DriverExtensionAbility.onConnect
77
78onConnect(want: Want): rpc.RemoteObject | Promise<rpc.RemoteObject>;
79
80Called following **onCreate()** when a DriverExtensionAbility is started by calling **connectAbility()**. A **RemoteObject** object is returned for communication between the server and client.
81
82**System capability**: SystemCapability.Driver.ExternalDevice
83
84**Parameters**
85
86| Name| Type| Mandatory| Description|
87| -------- | -------- | -------- | -------- |
88| want |  [Want](js-apis-app-ability-want.md)| Yes| Want information related to this DriverExtensionAbility, including the ability name and bundle name.|
89
90**Return value**
91
92| Type| Description|
93| -------- | -------- |
94| rpc.RemoteObject | A **RemoteObject** object used for communication between the server and client.|
95
96**Example**
97
98  ```ts
99  import DriverExtension from '@ohos.app.ability.DriverExtensionAbility';
100  import rpc from '@ohos.rpc';
101  import Want from '@ohos.app.ability.Want';
102  class StubTest extends rpc.RemoteObject{
103      constructor(des : string) {
104          super(des);
105      }
106      onRemoteMessageRequest(code : number, data : rpc.MessageSequence, reply : rpc.MessageSequence, option : rpc.MessageOption) {
107        // This interface must be overridden.
108        return true;
109      }
110  }
111  class DriverExt extends DriverExtension {
112    onConnect(want : Want) {
113      console.log('onConnect , want: ${want.abilityName}');
114      return new StubTest('test');
115    }
116  }
117  ```
118
119If the returned **RemoteObject** object depends on an asynchronous API, you can use the asynchronous lifecycle.
120
121  ```ts
122import DriverExtension from '@ohos.app.ability.DriverExtensionAbility';
123import rpc from '@ohos.rpc';
124import Want from '@ohos.app.ability.Want';
125class StubTest extends rpc.RemoteObject{
126    constructor(des : string) {
127        super(des);
128    }
129    onRemoteMessageRequest(code : number, data : rpc.MessageSequence, reply : rpc.MessageSequence, option : rpc.MessageOption) {
130      // This interface must be overridden.
131      return true;
132    }
133}
134async function getDescriptor() {
135    // Call the asynchronous function.
136    return "asyncTest"
137}
138class DriverExt extends DriverExtension {
139  async onConnect(want : Want) {
140    console.log(`onConnect , want: ${want.abilityName}`);
141    let descriptor = await getDescriptor();
142    return new StubTest(descriptor);
143  }
144}
145  ```
146
147## DriverExtensionAbility.onDisconnect
148
149onDisconnect(want: Want): void | Promise\<void>;
150
151Called when a client is disconnected from this DriverExtensionAbility.
152
153**System capability**: SystemCapability.Driver.ExternalDevice
154
155**Parameters**
156
157| Name| Type| Mandatory| Description|
158| -------- | -------- | -------- | -------- |
159| want |[Want](js-apis-app-ability-want.md)| Yes| Want information related to this DriverExtensionAbility, including the ability name and bundle name.|
160
161**Example**
162
163  ```ts
164  import DriverExtension from '@ohos.app.ability.DriverExtensionAbility';
165  import Want from '@ohos.app.ability.Want';
166  class DriverExt extends DriverExtension {
167    onDisconnect(want : Want) {
168      console.log('onDisconnect, want: ${want.abilityName}');
169    }
170  }
171  ```
172
173After the **onDisconnect** lifecycle callback is executed, the application may exit. As a result, the asynchronous function in **onDisconnect** may fail to be executed correctly, for example, asynchronously writing data to the database. The asynchronous lifecycle can be used to ensure that the subsequent lifecycle continues after the asynchronous **onDisconnect** is complete.
174
175  ```ts
176import DriverExtension from '@ohos.app.ability.DriverExtensionAbility';
177import Want from '@ohos.app.ability.Want';
178class DriverExt extends DriverExtension {
179  async onDisconnect(want : Want) {
180    console.log('onDisconnect, want: ${want.abilityName}');
181    // Call the asynchronous function.
182  }
183}
184  ```
185
186
187## DriverExtensionAbility.onDump
188
189onDump(params: Array\<string>): Array\<string>;
190
191Dumps client information.
192
193**System capability**: SystemCapability.Driver.ExternalDevice
194
195**Parameters**
196
197| Name| Type| Mandatory| Description|
198| -------- | -------- | -------- | -------- |
199| params | Array\<string> | Yes| Parameters in the form of a command.|
200
201**Example**
202
203  ```ts
204  class DriverExt extends DriverExtension {
205      onDump(params : Array<string>) {
206          console.log(`dump, params: ${JSON.stringify(params)}`);
207          return ['params'];
208      }
209  }
210  ```
211