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