js-apis-application-DataShareExtensionAbility.md 14.6 KB
Newer Older
S
songruirui 已提交
1 2
# DataShareExtensionAbility

S
songruirui 已提交
3
**DataShareExtensionAbility** 是基于元能力提供的ExtensionAbility框架,提供支持数据共享业务的能力。
S
songruirui 已提交
4 5

>**说明:** 
S
songruirui 已提交
6 7
>
>本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。仅限系统应用。
S
songruirui 已提交
8 9 10 11


## 导入模块

S
songruirui 已提交
12 13
```ts
import DataShareExtensionAbility from '@ohos.application.DataShareExtensionAbility'
S
songruirui 已提交
14 15 16 17 18 19
```

## onCreate

onCreate?(want: Want, callback: AsyncCallback<void>): void;

S
songruirui 已提交
20
DataShareExtAbility生命周期回调,在创建时回调,执行初始化业务逻辑操作。
S
songruirui 已提交
21

S
songruirui 已提交
22 23 24 25 26
此接口为可选的。可以被重写,也可以不进行重写。

此接口为系统接口,三方应用不支持调用。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider。
S
songruirui 已提交
27 28 29 30 31

**参数:**

| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
S
songruirui 已提交
32 33
| want | [Want](js-apis-application-Want.md#want) | 是  | Want类型信息,包括ability名称、bundle名称等。 |
| callback | AsyncCallback<void> | 是 | 表示被指定的回调方法。 |
S
songruirui 已提交
34 35 36

**示例:**

S
songruirui 已提交
37
```ts
S
songruirui 已提交
38 39
import rdb from '@ohos.data.rdb';

S
songruirui 已提交
40 41 42 43 44 45 46 47 48
let DB_NAME = "DB00.db";
let TBL_NAME = "TBL00";
let DDL_TBL_CREATE = "CREATE TABLE IF NOT EXISTS "
+ TBL_NAME
+ " (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER, phoneNumber DOUBLE, isStudent BOOLEAN, Binary BINARY)";

// All of the input parameters are passed from the native side
onCreate(want, callback) {
	// Specific functions need to be implemented by the user
S
songruirui 已提交
49
    console.log('DataShareExtAbility onCreate, want:' + want.abilityName);
S
songruirui 已提交
50 51 52 53 54 55 56
    console.log('DataShareExtAbility onCreate, this.context:' + this.context);
    rdb.getRdbStore(this.context, {
        name: DB_NAME
    }, 1, function (err, data) {
        console.log('getRdbStore fail, error message : ' + err);
        console.log('getRdbStore done, data : ' + data);
        let rdbStore = data;
S
songruirui 已提交
57
        rdbStore.executeSql(DDL_TBL_CREATE, [], function (err) {
S
songruirui 已提交
58
            console.log('executeSql fail, error message : ' + err);
S
songruirui 已提交
59 60
        });
    });
S
songruirui 已提交
61
    callback();
S
songruirui 已提交
62 63 64 65 66 67 68
}
```

## insert

insert?(uri: string, valueBucket: ValuesBucket, callback: AsyncCallback<number>): void;

S
songruirui 已提交
69 70 71 72 73 74 75
insert生命周期回调,在数据库插入时回调。

此接口为可选的。可以被重写,也可以不进行重写。

此接口为系统接口,三方应用不支持调用。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider。
S
songruirui 已提交
76 77 78 79 80

**参数:**

| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
S
songruirui 已提交
81 82 83
| uri |string | 是  | 指示要插入的数据的路径。 |
| valueBucket |[ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket) | 是 | 指示要插入的数据记录。 |
| callback |AsyncCallback<number> | 是 | 表示被指定的回调方法。 |
S
songruirui 已提交
84 85 86

**示例:**

S
songruirui 已提交
87
```ts
S
songruirui 已提交
88 89
import rdb from '@ohos.data.rdb';
let TBL_NAME = "TBL00";
S
songruirui 已提交
90 91
// Refer to the onCreate for the method of obtaining rdbStore
let rdbStore;
S
songruirui 已提交
92

S
songruirui 已提交
93
// All of the input parameters are passed from the native side
S
songruirui 已提交
94
insert(uri, value, callback) {
S
songruirui 已提交
95 96 97 98 99 100 101 102 103 104
    // Specific functions need to be implemented by the user
    if (value == null) {
        console.info('invalid valueBuckets');
        return;
    }
    rdbStore.insert(TBL_NAME, value, function (err, ret) {
        console.info('callback ret:' + ret);
        if (callback != undefined) {
            callback(err, ret);
        }
S
songruirui 已提交
105 106 107 108
    });
}
```

S
songruirui 已提交
109
## update
S
songruirui 已提交
110

S
songruirui 已提交
111
update?(uri: string, predicates: DataSharePredicates, valueBucket: ValuesBucket, callback: AsyncCallback<number>): void;
S
songruirui 已提交
112

S
songruirui 已提交
113
update生命周期回调,在数据库更新时回调。
S
songruirui 已提交
114

S
songruirui 已提交
115 116 117 118 119
此接口为可选的。可以被重写,也可以不进行重写。

此接口为系统接口,三方应用不支持调用。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider。
S
songruirui 已提交
120

S
songruirui 已提交
121
**参数:**
S
songruirui 已提交
122

S
songruirui 已提交
123 124 125 126 127 128
| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| uri | string | 是  | 指示要更新的数据的路径。 |
| predicates | [DataSharePredicates](js-apis-data-DataSharePredicates.md#datasharepredicates) | 是  | 指示筛选条件。 |
| valueBucket | [ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket) | 是 | 指示要更新的数据。 |
| callback | AsyncCallback<number> | 是 | 表示被指定的回调方法。 |
S
songruirui 已提交
129 130 131

**示例:**

S
songruirui 已提交
132
```ts
S
songruirui 已提交
133 134
import rdb from '@ohos.data.rdb';
let TBL_NAME = "TBL00";
S
songruirui 已提交
135 136
// Refer to the onCreate for the method of obtaining rdbStore
let rdbStore;
S
songruirui 已提交
137

S
songruirui 已提交
138
// All of the input parameters are passed from the native side
S
songruirui 已提交
139
update(uri, predicates, value, callback) {
S
songruirui 已提交
140 141 142 143 144 145 146 147 148
    // Specific functions need to be implemented by the user
    if (predicates == null || predicates == undefined) {
        return;
    }
    rdbStore.update(TBL_NAME, value, predicates, function (err, ret) {
        if (callback != undefined) {
            callback(err, ret);
        }
    });
S
songruirui 已提交
149 150 151
}
```

S
songruirui 已提交
152
## query
S
songruirui 已提交
153

S
songruirui 已提交
154
query?(uri: string, predicates: DataSharePredicates, columns: Array<string>, callback: AsyncCallback<Object>): void;
S
songruirui 已提交
155

S
songruirui 已提交
156
query生命周期回调,在数据库查询时回调。
S
songruirui 已提交
157

S
songruirui 已提交
158 159 160
此接口为可选的。可以被重写,也可以不进行重写。

此接口为系统接口,三方应用不支持调用。
S
songruirui 已提交
161

S
songruirui 已提交
162
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider。
S
songruirui 已提交
163

S
songruirui 已提交
164 165 166 167 168 169 170 171
**参数:**

| 名称 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
| uri | string | 是  | 指示要查询的数据的路径。 |
| predicates | [DataSharePredicates](js-apis-data-DataSharePredicates.md#datasharepredicates) | 是  | 指示筛选条件。 |
| columns | Array<string> | 是 | 指示要查询的列。如果此参数为空,则查询所有列。 |
| callback | AsyncCallback<Object> | 是 | 表示被指定的回调方法。 |
S
songruirui 已提交
172 173 174

**示例:**

S
songruirui 已提交
175
```ts
S
songruirui 已提交
176 177
import rdb from '@ohos.data.rdb';
let TBL_NAME = "TBL00";
S
songruirui 已提交
178 179
// Refer to the onCreate for the method of obtaining rdbStore
let rdbStore;
S
songruirui 已提交
180

S
songruirui 已提交
181 182 183 184 185 186 187 188 189 190 191 192 193 194
// All of the input parameters are passed from the native side
query(uri, predicates, columns, callback) {
    // Specific functions need to be implemented by the user
    if (predicates == null || predicates == undefined) {
        return;
    }
    rdbStore.query(TBL_NAME, predicates, columns, function (err, resultSet) {
        if (resultSet != undefined) {
            console.info('resultSet.rowCount: ' + resultSet.rowCount);
        }
        if (callback != undefined) {
            callback(err, resultSet);
        }
    });
S
songruirui 已提交
195 196 197
}
```

S
songruirui 已提交
198
## delete
S
songruirui 已提交
199 200 201

delete?(uri: string, predicates: DataSharePredicates, callback: AsyncCallback<number>): void;

S
songruirui 已提交
202 203 204 205 206
delete生命周期回调,在删除数据库记录时回调。

此接口为可选的。可以被重写,也可以不进行重写。

此接口为系统接口,三方应用不支持调用。
S
songruirui 已提交
207

S
songruirui 已提交
208
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider。
S
songruirui 已提交
209

S
songruirui 已提交
210
**参数:**
S
songruirui 已提交
211

S
songruirui 已提交
212 213 214 215 216
| 名称       | 参数类型                                                     | 必填 | 说明                     |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------ |
| uri        | string                                                       | 是   | 指示要查询的数据的路径。 |
| predicates | [DataSharePredicates](js-apis-data-DataSharePredicates.md#datasharepredicates) | 是   | 指示筛选条件。           |
| callback   | AsyncCallback<number>                                        | 是   | 表示被指定的回调方法。   |
S
songruirui 已提交
217 218 219

**示例:**

S
songruirui 已提交
220
```ts
S
songruirui 已提交
221 222
import rdb from '@ohos.data.rdb';
let TBL_NAME = "TBL00";
S
songruirui 已提交
223 224
// Refer to the onCreate for the method of obtaining rdbStore
let rdbStore;
S
songruirui 已提交
225

S
songruirui 已提交
226
// All of the input parameters are passed from the native side
S
songruirui 已提交
227
delete(uri, predicates, callback) {
S
songruirui 已提交
228 229 230 231 232 233 234 235 236
    // Specific functions need to be implemented by the user
    if (predicates == null || predicates == undefined) {
        return;
    }
    rdbStore.delete(TBL_NAME, predicates, function (err, ret) {
        if (callback != undefined) {
            callback(err, ret);
        }
    });
S
songruirui 已提交
237 238 239
}
```

S
songruirui 已提交
240
## batchInsert
S
songruirui 已提交
241 242 243

batchInsert?(uri: string, valueBuckets: Array<ValuesBucket>, callback: AsyncCallback<number>): void;

S
songruirui 已提交
244 245 246
batchinsert生命周期回调,在数据库批量插入时回调。

此接口为可选的。可以被重写,也可以不进行重写。
S
songruirui 已提交
247

S
songruirui 已提交
248
此接口为系统接口,三方应用不支持调用。
S
songruirui 已提交
249

S
songruirui 已提交
250
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider。
S
songruirui 已提交
251

S
songruirui 已提交
252 253 254 255 256 257 258
**参数:**

| 名称         | 参数类型                                                     | 必填 | 说明                     |
| ------------ | ------------------------------------------------------------ | ---- | ------------------------ |
| uri          | string                                                       | 是   | 指示要插入的数据的路径。 |
| valueBuckets | Array<[ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket)> | 是   | 指示要插入的数据记录。   |
| callback     | AsyncCallback<number>                                        | 是   | 表示被指定的回调方法。   |
S
songruirui 已提交
259 260 261

**示例:**

S
songruirui 已提交
262
```ts
S
songruirui 已提交
263 264
import rdb from '@ohos.data.rdb';
let TBL_NAME = "TBL00";
S
songruirui 已提交
265 266
// Refer to the onCreate for the method of obtaining rdbStore
let rdbStore;
S
songruirui 已提交
267

S
songruirui 已提交
268
// All of the input parameters are passed from the native side
S
songruirui 已提交
269
batchInsert(uri: string, valueBuckets, callback) {
S
songruirui 已提交
270 271 272 273 274 275 276 277 278 279 280 281 282
    // Specific functions need to be implemented by the user
    if (valueBuckets == null || valueBuckets.length == undefined) {
        console.info('invalid valueBuckets');
        return;
    }
    let resultNum = valueBuckets.length
    valueBuckets.forEach(vb => {
        rdbStore.insert(TBL_NAME, vb, function (err, ret) {
            if (callback != undefined) {
                callback(err, resultNum);
            }
        });
    });
S
songruirui 已提交
283 284 285
}
```

S
songruirui 已提交
286
## getType
S
songruirui 已提交
287 288 289

getType?(uri: string, callback: AsyncCallback<string>): void;

S
songruirui 已提交
290 291 292 293 294 295 296
getType生命周期回调函数,获取给定URI对应的MIME类型时回调。

此接口为可选的。可以被重写,也可以不进行重写。

此接口为系统接口,三方应用不支持调用。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider。
S
songruirui 已提交
297 298 299 300 301

**参数:**

| 参数名 | 参数类型 | 必填 | 说明 |
| ----- | ------ | ------ | ------ |
S
songruirui 已提交
302 303
| uri | string | 是  | 指示要操作的数据的路径。 |
| callback | AsyncCallback<string> | 是 | 表示被指定的回调方法。 |
S
songruirui 已提交
304 305 306

**示例:**

S
songruirui 已提交
307 308 309 310 311 312 313
```ts
// All of the input parameters are passed from the native side
getType(uri: string, callback) {
    // Specific functions need to be implemented by the user
    let err;
    let ret = "image";
    callback(err, ret);
S
songruirui 已提交
314 315 316
}
```

S
songruirui 已提交
317
## getFileTypes
S
songruirui 已提交
318 319 320

getFileTypes?(uri: string, mimeTypeFilter: string, callback: AsyncCallback<Array<string>>): void;

S
songruirui 已提交
321
getFileTypes生命周期回调,获取支持文件的MIME类型时回调。
S
songruirui 已提交
322

S
songruirui 已提交
323 324 325
此接口为可选的。可以被重写,也可以不进行重写。

此接口为系统接口,三方应用不支持调用。
S
songruirui 已提交
326

S
songruirui 已提交
327
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider。
S
songruirui 已提交
328

S
songruirui 已提交
329
**参数:**
S
songruirui 已提交
330

S
songruirui 已提交
331 332 333 334 335
| 名称           | 类型                         | 必填 | 描述                         |
| -------------- | ---------------------------- | ---- | ---------------------------- |
| uri            | string                       | 是   | 指示要获取的文件的路径。     |
| mimeTypeFilter | string                       | 是   | 指示要获取的文件的MIME类型。 |
| callback       | AsyncCallback<Array<string>> | 是   | 表示被指定的回调方法。       |
S
songruirui 已提交
336 337 338

**示例:**

S
songruirui 已提交
339 340
```ts
// All of the input parameters are passed from the native side
S
songruirui 已提交
341
getFileTypes(uri: string, mimeTypeFilter: string,callback) {
S
songruirui 已提交
342 343 344 345
    // Specific functions need to be implemented by the user
    let err;
    let ret = new Array("type01", "type02", "type03");
    callback(err, ret);
S
songruirui 已提交
346 347 348
}
```

S
songruirui 已提交
349
## normalizeUri
S
songruirui 已提交
350 351 352

normalizeUri?(uri: string, callback: AsyncCallback<string>): void;

S
songruirui 已提交
353
normalizeUri生命周期回调,给定uri转换为规范化uri时回调。
S
songruirui 已提交
354

S
songruirui 已提交
355
此接口为可选的。可以被重写,也可以不进行重写。
S
songruirui 已提交
356

S
songruirui 已提交
357
此接口为系统接口,三方应用不支持调用。
S
songruirui 已提交
358

S
songruirui 已提交
359 360 361
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider。

**参数:**
S
songruirui 已提交
362

S
songruirui 已提交
363 364 365 366
| 名称     | 类型                  | 必填 | 描述                    |
| -------- | --------------------- | ---- | ----------------------- |
| uri      | string                | 是   | 指示要规范化的uri对象。 |
| callback | AsyncCallback<string> | 是   | 表示被指定的回调方法。  |
S
songruirui 已提交
367 368 369

**示例:**

S
songruirui 已提交
370 371 372 373 374 375 376
```ts
// All of the input parameters are passed from the native side
normalizeUri(uri: string, callback) {
    // Specific functions need to be implemented by the user
    let err;
    let ret = "normalize+" + uri;
    callback(err, ret);
S
songruirui 已提交
377 378 379
}
```

S
songruirui 已提交
380
## denormalizeUri
S
songruirui 已提交
381 382 383

denormalizeUri?(uri: string, callback: AsyncCallback<string>): void;

S
songruirui 已提交
384
将由denormalizeUri生命周期回调,给定规范化uri转换为非规范化uri时回调。
S
songruirui 已提交
385

S
songruirui 已提交
386 387 388
此接口为可选的。可以被重写,也可以不进行重写。

此接口为系统接口,三方应用不支持调用。
S
songruirui 已提交
389

S
songruirui 已提交
390
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider。
S
songruirui 已提交
391

S
songruirui 已提交
392
**参数:**
S
songruirui 已提交
393

S
songruirui 已提交
394 395 396 397
| 名称     | 类型                  | 必填 | 描述                    |
| -------- | --------------------- | ---- | ----------------------- |
| uri      | string                | 是   | 指示要规范化的uri对象。 |
| callback | AsyncCallback<string> | 是   | 表示被指定的回调方法。  |
S
songruirui 已提交
398 399 400

**示例:**

S
songruirui 已提交
401 402 403
```ts
// All of the input parameters are passed from the native side
denormalizeUri(uri: string, callback) {
S
songruirui 已提交
404
	// Specific functions need to be implemented by the user
S
songruirui 已提交
405
    let err;
S
songruirui 已提交
406
	let ret = "denormalize+" + uri;
S
songruirui 已提交
407
	callback(err, ret);
S
songruirui 已提交
408 409 410
}
```

S
songruirui 已提交
411
## openFile
S
songruirui 已提交
412 413 414

openFile?(uri: string, mode: string, callback: AsyncCallback<number>): void;

S
songruirui 已提交
415
将由openFile生命周期回调,在打开文件时回调。
S
songruirui 已提交
416

S
songruirui 已提交
417
此接口为可选的。可以被重写,也可以不进行重写。
S
songruirui 已提交
418

S
songruirui 已提交
419
此接口为系统接口,三方应用不支持调用。
S
songruirui 已提交
420

S
songruirui 已提交
421 422 423
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Provider。

**参数:**
S
songruirui 已提交
424

S
songruirui 已提交
425 426 427 428 429
| 名称     | 类型                  | 必填 | 描述                                       |
| -------- | --------------------- | ---- | ------------------------------------------ |
| uri      | string                | 是   | 指示要规范化的uri对象。                    |
| mode     | string                | 是   | 指示文件打开模式,包括只读模式,读写模式。 |
| callback | AsyncCallback<number> | 是   | 表示被指定的回调方法。                     |
S
songruirui 已提交
430 431 432

**示例:**

S
songruirui 已提交
433 434
```ts
// All of the input parameters are passed from the native side
S
songruirui 已提交
435 436
openFile(uri: string, mode, callback) {
    // Specific functions need to be implemented by the user
S
songruirui 已提交
437
    let err;
S
songruirui 已提交
438 439 440 441
    let fd = 0;
    callback(err,fd);
}
```