js-apis-data-preferences.md 35.6 KB
Newer Older
W
wangxiyue 已提交
1
# 首选项
P
PaDoBoo 已提交
2

3 4 5
首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。

数据存储形式为键值对,键的类型为字符串型,值的存储数据类型包括数字型、字符型、布尔型以及这3种类型的数组类型。
P
PaDoBoo 已提交
6 7


P
PaDaBoo 已提交
8
> **说明:**
9
>
10
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
P
PaDoBoo 已提交
11 12 13 14


## 导入模块

15
```js
16
import data_preferences from '@ohos.data.preferences';
P
PaDoBoo 已提交
17 18
```

G
ge-yafang 已提交
19
## 常量
P
PaDoBoo 已提交
20

21
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
22

23 24 25 26
| 名称             | 参数类型 | 可读 | 可写 | 说明                                    |
| ---------------- | -------- | ---- | ---- | --------------------------------------- |
| MAX_KEY_LENGTH   | string   | 是   | 否   | Key的最大长度限制,需小于80个字节。     |
| MAX_VALUE_LENGTH | string   | 是   | 否   | Value的最大长度限制,需小于8192个字节。 |
P
PaDoBoo 已提交
27 28


29
## data_preferences.getPreferences
P
PaDoBoo 已提交
30

P
PaDaBoo 已提交
31
getPreferences(context: Context, name: string, callback: AsyncCallback<Preferences>): void
P
PaDoBoo 已提交
32

33
获取Preferences实例,使用callback异步回调。
P
PaDaBoo 已提交
34

P
PaDaBoo 已提交
35
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
36

G
ge-yafang 已提交
37
**参数:**
38 39 40

| 参数名   | 类型                                             | 必填 | 说明                                                         |
| -------- | ------------------------------------------------ | ---- | ------------------------------------------------------------ |
41
| context  | Context            | 是   | 应用上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。                                                 |
42 43
| name     | string                                           | 是   | Preferences实例的名称。                                      |
| callback | AsyncCallback&lt;[Preferences](#preferences)&gt; | 是   | 回调函数。当获取Preferences实例成功,err为undefined,返回Preferences实例;否则err为错误码。 |
P
PaDoBoo 已提交
44

G
ge-yafang 已提交
45
**示例:**
46

47 48
FA模型示例:

49
```js
50
// 获取context
51 52
import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
53

54
let preferences = null;
D
duanweiling 已提交
55 56 57 58 59 60 61 62 63 64 65 66 67
try {
    mPreference.getPreferences(context, 123, function (err, val) {
        if (err) {
            console.log("get err =" + err + ", code =" + err.code + ", message =" + err.message)
            expect(false).assertTrue()
        }
        expect(true).assertEqual(val)
    })
} catch (err) {
    console.log("trycatch err =" + err + ", code =" + err.code + ", message =" + err.message)
    done()
    console.log("testPreferencesCallback0000 end.")
}
P
PaDaBoo 已提交
68
```
P
PaDoBoo 已提交
69

70 71 72 73
Stage模型示例:

```ts
// 获取context
74 75
import Ability from '@ohos.application.Ability';
let context = null;
76 77
class MainAbility extends Ability{
    onWindowStageCreate(windowStage){
78
        context = this.context;
79 80 81
    }
}

82
let preferences = null;
D
duanweiling 已提交
83 84 85 86 87 88 89 90 91 92 93 94 95
try {
    mPreference.getPreferences(context, 123, function (err, val) {
        if (err) {
            console.log("get err =" + err + ", code =" + err.code + ", message =" + err.message)
            expect(false).assertTrue()
        }
        expect(true).assertEqual(val)
    })
} catch (err) {
    console.log("trycatch err =" + err + ", code =" + err.code + ", message =" + err.message)
    done()
    console.log("testPreferencesCallback0000 end.")
}
96
```
P
PaDoBoo 已提交
97

98
## data_preferences.getPreferences
P
PaDoBoo 已提交
99

P
PaDaBoo 已提交
100
getPreferences(context: Context, name: string): Promise&lt;Preferences&gt;
P
PaDoBoo 已提交
101

102
获取Preferences实例,使用Promise异步回调。
P
PaDoBoo 已提交
103

P
PaDaBoo 已提交
104
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
105

G
ge-yafang 已提交
106
**参数:**
107 108 109

| 参数名  | 类型                                  | 必填 | 说明                    |
| ------- | ------------------------------------- | ---- | ----------------------- |
110
| context | Context | 是   | 应用上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。            |
111
| name    | string                                | 是   | Preferences实例的名称。 |
P
PaDoBoo 已提交
112

G
ge-yafang 已提交
113
**返回值:**
114

115 116 117
| 类型                                       | 说明                               |
| ------------------------------------------ | ---------------------------------- |
| Promise&lt;[Preferences](#preferences)&gt; | Promise对象,返回Preferences实例。 |
P
PaDoBoo 已提交
118

G
ge-yafang 已提交
119
**示例:**
120

121 122
FA模型示例:

123
```js
124
// 获取context
125 126
import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
127

D
duanweiling 已提交
128 129 130 131 132 133 134 135 136 137 138 139 140
try{
    mPreference.getPreferences(context, 1233).then((ret)=>{
        console.log("get err")
        expect(false).assertTrue()
    }).catch((err) => {
        console.log("get err =" + err + ", code =" + err.code +", message =" + err.message)
        expect(false).assertTrue()
    })
} catch(err) {
    console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message)
    done()
    console.log("testPreferencesPromise0000 end.")
}
P
PaDaBoo 已提交
141
```
P
PaDoBoo 已提交
142

143 144 145 146
Stage模型示例:

```ts
// 获取context
147 148
import Ability from '@ohos.application.Ability';
let context = null;
149 150
class MainAbility extends Ability{
    onWindowStageCreate(windowStage){
151
        context = this.context;
152 153 154
    }
}

D
duanweiling 已提交
155 156 157 158 159 160 161 162 163 164 165 166 167
try{
    mPreference.getPreferences(context, 1233).then((ret)=>{
        console.log("get err")
        expect(false).assertTrue()
    }).catch((err) => {
        console.log("get err =" + err + ", code =" + err.code +", message =" + err.message)
        expect(false).assertTrue()
    })
} catch(err) {
    console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message)
    done()
    console.log("testPreferencesPromise0000 end.")
}
168
```
P
PaDoBoo 已提交
169

170
## data_preferences.deletePreferences
P
PaDoBoo 已提交
171

172
deletePreferences(context: Context, name: string, callback: AsyncCallback&lt;void&gt;): void
P
PaDoBoo 已提交
173

174 175 176
从内存中移除指定的Preferences实例,使用callback异步回调。

若Preferences实例有对应的持久化文件,则同时删除其持久化文件。
177

178
调用该接口后,应用不允许再使用该Preferences实例进行数据操作,否则会出现数据一致性问题。
P
PaDoBoo 已提交
179

P
PaDaBoo 已提交
180
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
181

G
ge-yafang 已提交
182
**参数:**
183

184 185
| 参数名   | 类型                                  | 必填 | 说明                                                 |
| -------- | ------------------------------------- | ---- | ---------------------------------------------------- |
186
| context  | Context | 是   | 应用上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。                                         |
187
| name     | string                                | 是   | Preferences实例的名称。                              |
188
| callback | AsyncCallback&lt;void&gt;             | 是   | 回调函数。当移除成功,err为undefined,否则为错误码。 |
P
PaDoBoo 已提交
189

D
duanweiling 已提交
190 191 192 193 194 195 196 197
**错误码:**

以下错误码的详细介绍请参见[首选项错误码](../errorcodes/errorcode-preferences.md)

| 错误码ID | 错误信息                       |
| -------- | ------------------------------|
| 15500010 | Failed to delete preferences. |

G
ge-yafang 已提交
198
**示例:**
199

200 201
FA模型示例:

202
```js
203
// 获取context
204 205
import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
206

D
duanweiling 已提交
207 208 209 210 211 212 213 214 215 216 217 218 219
try {
    mPreference.deletePreferences(context, 123, function (err, val) {
        if (err) {
            console.log("get err =" + err + ", code =" + err.code + ", message =" + err.message)
            expect(false).assertTrue()
        }
        expect(true).assertEqual(val)
    })
} catch (err) {
    console.log("trycatch err =" + err + ", code =" + err.code + ", message =" + err.message)
    done()
    console.log("testPreferencesCallback0001 end.")
}
P
PaDaBoo 已提交
220
```
P
PaDoBoo 已提交
221

222 223 224 225
Stage模型示例:

```ts
// 获取context
226 227
import Ability from '@ohos.application.Ability';
let context = null;
228 229
class MainAbility extends Ability{
    onWindowStageCreate(windowStage){
230
        context = this.context;
231 232 233
    }
}

D
duanweiling 已提交
234 235 236 237 238 239 240 241 242 243 244 245 246
try {
    mPreference.deletePreferences(context, 123, function (err, val) {
        if (err) {
            console.log("get err =" + err + ", code =" + err.code + ", message =" + err.message)
            expect(false).assertTrue()
        }
        expect(true).assertEqual(val)
    })
} catch (err) {
    console.log("trycatch err =" + err + ", code =" + err.code + ", message =" + err.message)
    done()
    console.log("testPreferencesCallback0001 end.")
}
247
```
P
PaDoBoo 已提交
248

249
## data_preferences.deletePreferences
P
PaDoBoo 已提交
250

P
PaDaBoo 已提交
251
deletePreferences(context: Context, name: string): Promise&lt;void&gt;
P
PaDoBoo 已提交
252

253 254 255
从内存中移除指定的Preferences实例,使用Promise异步回调。

若Preferences实例有对应的持久化文件,则同时删除其持久化文件。
256

257
调用该接口后,应用不允许再使用该Preferences实例进行数据操作,否则会出现数据一致性问题。
P
PaDoBoo 已提交
258

P
PaDaBoo 已提交
259
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
260

G
ge-yafang 已提交
261
**参数:**
262 263 264

| 参数名  | 类型                                  | 必填 | 说明                    |
| ------- | ------------------------------------- | ---- | ----------------------- |
265
| context | Context | 是   | 应用上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。            |
266
| name    | string                                | 是   | Preferences实例的名称。 |
P
PaDoBoo 已提交
267

D
duanweiling 已提交
268 269 270 271 272 273 274 275
**错误码:**

以下错误码的详细介绍请参见[首选项错误码](../errorcodes/errorcode-preferences.md)

| 错误码ID | 错误信息                       |
| -------- | ------------------------------|
| 15500010 | Failed to delete preferences. |

G
ge-yafang 已提交
276
**返回值:**
277

278 279 280
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
P
PaDoBoo 已提交
281

G
ge-yafang 已提交
282
**示例:**
283

284 285
FA模型示例:

286
```js
287
// 获取context
288 289
import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
290

D
duanweiling 已提交
291 292 293 294 295 296 297 298 299 300 301 302 303
try{
    mPreference.deletePreferences(context, 1233).then((ret)=>{
        console.log("get err")
        expect(false).assertTrue()
    }).catch((err) => {
        console.log("get err =" + err + ", code =" + err.code +", message =" + err.message)
        expect(false).assertTrue()
    })
} catch(err) {
    console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message)
    done()
    console.log("testPreferencesPromise0001 end.")
}
P
PaDaBoo 已提交
304
```
P
PaDoBoo 已提交
305

306 307 308 309
Stage模型示例:

```ts
// 获取context
310 311
import Ability from '@ohos.application.Ability';
let context = null;
312 313
class MainAbility extends Ability{
    onWindowStageCreate(windowStage){
314
        context = this.context;
315 316 317
    }
}

D
duanweiling 已提交
318 319 320 321 322 323 324 325 326 327 328 329 330
try{
    mPreference.deletePreferences(context, 1233).then((ret)=>{
        console.log("get err")
        expect(false).assertTrue()
    }).catch((err) => {
        console.log("get err =" + err + ", code =" + err.code +", message =" + err.message)
        expect(false).assertTrue()
    })
} catch(err) {
    console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message)
    done()
    console.log("testPreferencesPromise0001 end.")
}
331
```
P
PaDoBoo 已提交
332

333
## data_preferences.removePreferencesFromCache
P
PaDoBoo 已提交
334

335
removePreferencesFromCache(context: Context, name: string, callback: AsyncCallback&lt;void&gt;): void
P
PaDoBoo 已提交
336

337
从内存中移除指定的Preferences实例,使用callback异步回调。
G
ge-yafang 已提交
338

339
调用该接口后,应用不允许再使用该Preferences实例进行数据操作,否则会出现数据一致性问题。
P
PaDoBoo 已提交
340

P
PaDaBoo 已提交
341
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
342

G
ge-yafang 已提交
343
**参数:**
344

345 346
| 参数名   | 类型                                  | 必填 | 说明                                                 |
| -------- | ------------------------------------- | ---- | ---------------------------------------------------- |
347
| context  | Context | 是   | 应用上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。                                         |
348
| name     | string                                | 是   | Preferences实例的名称。                              |
349
| callback | AsyncCallback&lt;void&gt;             | 是   | 回调函数。当移除成功,err为undefined,否则为错误码。 |
P
PaDoBoo 已提交
350

G
ge-yafang 已提交
351
**示例:**
352

353 354
FA模型示例:

355
```js
356
// 获取context
357 358
import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
359

D
duanweiling 已提交
360 361 362 363 364 365 366 367 368 369 370 371 372
try {
    mPreference.removePreferencesFromCache(context, 123, function (err, val) {
        if (err) {
            console.log("get err =" + err + ", code =" + err.code + ", message =" + err.message)
            expect(false).assertTrue()
        }
        expect(true).assertEqual(val)
    })
} catch (err) {
    console.log("trycatch err =" + err + ", code =" + err.code + ", message =" + err.message)
    done()
    console.log("testPreferencesCallback0002 end.")
}
P
PaDaBoo 已提交
373
```
P
PaDoBoo 已提交
374

375 376 377 378
Stage模型示例:

```ts
// 获取context
379 380
import Ability from '@ohos.application.Ability';
let context = null;
381 382
class MainAbility extends Ability{
    onWindowStageCreate(windowStage){
383
        context = this.context;
384 385 386
    }
}

D
duanweiling 已提交
387 388 389 390 391 392 393 394 395 396 397 398 399
try {
    mPreference.removePreferencesFromCache(context, 123, function (err, val) {
        if (err) {
            console.log("get err =" + err + ", code =" + err.code + ", message =" + err.message)
            expect(false).assertTrue()
        }
        expect(true).assertEqual(val)
    })
} catch (err) {
    console.log("trycatch err =" + err + ", code =" + err.code + ", message =" + err.message)
    done()
    console.log("testPreferencesCallback0002 end.")
}
400
```
P
PaDoBoo 已提交
401

402
## data_preferences.removePreferencesFromCache
P
PaDoBoo 已提交
403

P
PaDaBoo 已提交
404
removePreferencesFromCache(context: Context, name: string): Promise&lt;void&gt;
P
PaDoBoo 已提交
405

A
Annie_wang 已提交
406
从内存中移除指定的Preferences实例,使用Promise异步回调。
G
ge-yafang 已提交
407

408
调用该接口后,应用不允许再使用该Preferences实例进行数据操作,否则会出现数据一致性问题。
P
PaDoBoo 已提交
409

P
PaDaBoo 已提交
410
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
411

G
ge-yafang 已提交
412
**参数:**
413 414 415

| 参数名  | 类型                                  | 必填 | 说明                    |
| ------- | ------------------------------------- | ---- | ----------------------- |
416
| context | Context | 是   | 应用上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。            |
417
| name    | string                                | 是   | Preferences实例的名称。 |
P
PaDoBoo 已提交
418

G
ge-yafang 已提交
419
**返回值:**
420

421 422 423
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
P
PaDoBoo 已提交
424

G
ge-yafang 已提交
425
**示例:**
426

427 428
FA模型示例:

429
```js
430
// 获取context
431 432
import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
433

D
duanweiling 已提交
434 435 436 437 438 439 440 441 442 443 444 445 446
try{
    mPreference.removePreferencesFromCache(context, 1233).then((ret)=>{
        console.log("get err")
        expect(false).assertTrue()
    }).catch((err) => {
        console.log("get err =" + err + ", code =" + err.code +", message =" + err.message)
        expect(false).assertTrue()
    })
} catch(err) {
    console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message)
    done()
    console.log("testPreferencesPromise0002 end.")
}
P
PaDaBoo 已提交
447
```
P
PaDoBoo 已提交
448

449 450 451 452
Stage模型示例:

```ts
// 获取context
453 454
import Ability from '@ohos.application.Ability';
let context = null;
455 456
class MainAbility extends Ability{
    onWindowStageCreate(windowStage){
457
        context = this.context;
458 459 460
    }
}

D
duanweiling 已提交
461 462 463 464 465 466 467 468 469 470 471 472 473
try{
    mPreference.removePreferencesFromCache(context, 1233).then((ret)=>{
        console.log("get err")
        expect(false).assertTrue()
    }).catch((err) => {
        console.log("get err =" + err + ", code =" + err.code +", message =" + err.message)
        expect(false).assertTrue()
    })
} catch(err) {
    console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message)
    done()
    console.log("testPreferencesPromise0002 end.")
}
474
```
P
PaDoBoo 已提交
475 476 477

## Preferences

478 479 480
存储实例,提供获取和修改存储数据的接口。

下列接口都需先使用[data_preferences.getPreferences](#data_preferencesgetpreferences)获取到Preferences实例,再通过此实例调用对应接口。
P
PaDoBoo 已提交
481 482 483 484 485 486


### get

get(key: string, defValue: ValueType, callback: AsyncCallback&lt;ValueType&gt;): void

487
获取键对应的值,如果值为null或者非默认值类型,返回默认数据,使用callback异步回调。
P
PaDoBoo 已提交
488

P
PaDaBoo 已提交
489
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
490

G
ge-yafang 已提交
491
**参数:**
492

493 494 495 496 497
| 参数名   | 类型                                         | 必填 | 说明                                                         |
| -------- | -------------------------------------------- | ---- | ------------------------------------------------------------ |
| key      | string                                       | 是   | 要获取的存储Key名称,不能为空。                              |
| defValue | [ValueType](#valuetype)                      | 是   | 默认返回值。支持number、string、boolean、Array\<number>、Array\<string>、Array\<boolean>类型。 |
| callback | AsyncCallback&lt;[ValueType](#valuetype)&gt; | 是   | 回调函数。当获取成功时,err为undefined,data为键对应的值;否则err为错误码。 |
P
PaDoBoo 已提交
498

G
ge-yafang 已提交
499
**示例:**
500 501

```js
D
duanweiling 已提交
502 503 504 505 506 507 508 509 510 511 512 513 514
try {
    mPreference.get(123, function (err, val) {
        if (err) {
            console.log("get err =" + err + ", code =" + err.code + ", message =" + err.message)
            expect(false).assertTrue()
        }
        expect(true).assertEqual(val)
    })
} catch (err) {
    console.log("trycatch err =" + err + ", code =" + err.code + ", message =" + err.message)
    done()
    console.log("testPreferencesCallback002 end.")
}
P
PaDaBoo 已提交
515
```
P
PaDoBoo 已提交
516 517 518 519 520 521


### get

get(key: string, defValue: ValueType): Promise&lt;ValueType&gt;

522
获取键对应的值,如果值为null或者非默认值类型,返回默认数据,使用Promise异步回调。
P
PaDoBoo 已提交
523

P
PaDaBoo 已提交
524
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
525

526
 **参数:**
527
 
528 529 530 531
| 参数名   | 类型                    | 必填 | 说明                                                         |
| -------- | ----------------------- | ---- | ------------------------------------------------------------ |
| key      | string                  | 是   | 要获取的存储Key名称,不能为空。                              |
| defValue | [ValueType](#valuetype) | 是   | 默认返回值。支持number、string、boolean、Array\<number>、Array\<string>、Array\<boolean>类型。 |
P
PaDoBoo 已提交
532

G
ge-yafang 已提交
533
**返回值:**
534 535 536 537

| 类型                                | 说明                          |
| ----------------------------------- | ----------------------------- |
| Promise<[ValueType](#valuetype)&gt; | Promise对象,返回键对应的值。 |
P
PaDoBoo 已提交
538

G
ge-yafang 已提交
539
**示例:**
540

541
```js
D
duanweiling 已提交
542 543 544 545 546 547 548 549 550 551 552 553 554
try{
    mPreference.get(KEY_TEST_STRING_ELEMENT, KEY_TEST_INT_ELEMENT).then((ret)=>{
        expect('123').assertEqual(ret)
        done()
        console.log("testPreferencesPromise003 end.")
    }).catch((err) => {
        console.log("get err =" + err + ", code =" + err.code +", message =" + err.message)
        expect(false).assertTrue()
    })
} catch(err) {
    console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message)
    expect(false).assertTrue()
}
P
PaDaBoo 已提交
555
```
P
PaDoBoo 已提交
556

557 558 559 560
### getAll

getAll(callback: AsyncCallback&lt;Object&gt;): void;

561
获取含有所有键值的Object对象。
562 563 564 565

**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core

**参数:**
566

567 568 569
| 参数名   | 类型                        | 必填 | 说明                                                         |
| -------- | --------------------------- | ---- | ------------------------------------------------------------ |
| callback | AsyncCallback&lt;Object&gt; | 是   | 回调函数。当获取成功,err为undefined,value为含有所有键值的Object对象;否则err为错误码。 |
570 571

**示例:**
572 573

```js
D
duanweiling 已提交
574 575 576 577 578 579 580 581 582 583 584 585 586 587
try {
    mPreference.getAll(function (err, val) {
        if (err) {
            console.log("getAll err =" + err + ", code =" + err.code + ", message =" + err.message)
            expect(false).assertTrue()
        }
        console.log("getAll val = " + JSON.stringify(val))
        done()
        console.log("testPreferencesCallback004 end.")
    })
} catch (err) {
    console.log("trycatch err =" + err + ", code =" + err.code + ", message =" + err.message)
    expect(false).assertTrue()
}
588 589 590 591 592 593 594
```


### getAll

getAll(): Promise&lt;Object&gt;

595
获取含有所有键值的Object对象。
596 597 598 599

**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core

**返回值:**
600

601 602 603
| 类型                  | 说明                                        |
| --------------------- | ------------------------------------------- |
| Promise&lt;Object&gt; | Promise对象,返回含有所有键值的Object对象。 |
604 605

**示例:**
606

607
```js
D
duanweiling 已提交
608 609 610 611 612 613 614 615 616 617 618 619
try {
    mPreference.getAll().then((ret) => {
        done()
        console.log("testPreferencesPromise004 end.")
    }).catch((err) => {
        console.log("getAll err =" + err + ", code =" + err.code + ", message =" + err.message)
        expect(false).assertTrue()
    })
} catch (err) {
    console.log("trycatch err =" + err + ", code =" + err.code + ", message =" + err.message)
    expect(false).assertTrue()
}
620
```
P
PaDoBoo 已提交
621 622 623 624 625

### put

put(key: string, value: ValueType, callback: AsyncCallback&lt;void&gt;): void

626
将数据写入Preferences实例,可通过[flush](#flush)将Preferences实例持久化,使用callback异步回调。
P
PaDoBoo 已提交
627

P
PaDaBoo 已提交
628
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
629

G
ge-yafang 已提交
630
**参数:**
631

632 633 634 635 636
| 参数名   | 类型                      | 必填 | 说明                                                         |
| -------- | ------------------------- | ---- | ------------------------------------------------------------ |
| key      | string                    | 是   | 要修改的存储的Key,不能为空。                                |
| value    | [ValueType](#valuetype)   | 是   | 存储的新值。支持number、string、boolean、Array\<number>、Array\<string>、Array\<boolean>类型。 |
| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数。当数据写入成功,err为undefined;否则为错误码。     |
P
PaDoBoo 已提交
637

G
ge-yafang 已提交
638
**示例:**
639

640
```js
D
duanweiling 已提交
641 642 643 644 645 646 647 648 649 650 651 652 653 654
try{
    mPreference.put(KEY_TEST_STRING_ELEMENT, KEY_TEST_INT_ELEMENT, function (err) {
        if (err) {
            console.log("put err =" + err + ", code =" + err.code +", message =" + err.message)
            expect(false).assertTrue()
        }
        done()
        console.log("testPreferencesCallback008 end.")
    })
} catch(err) {
    console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message)
    expect(false).assertTrue()
}

P
PaDaBoo 已提交
655
```
P
PaDoBoo 已提交
656 657 658 659 660 661


### put

put(key: string, value: ValueType): Promise&lt;void&gt;

662
将数据写入Preferences实例,可通过[flush](#flush)将Preferences实例持久化,使用Promise异步回调。
P
PaDoBoo 已提交
663

P
PaDaBoo 已提交
664
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
665

G
ge-yafang 已提交
666
**参数:**
667

668 669 670 671
| 参数名 | 类型                    | 必填 | 说明                                                         |
| ------ | ----------------------- | ---- | ------------------------------------------------------------ |
| key    | string                  | 是   | 要修改的存储的Key,不能为空。                                |
| value  | [ValueType](#valuetype) | 是   | 存储的新值。支持number、string、boolean、Array\<number>、Array\<string>、Array\<boolean>类型。 |
P
PaDoBoo 已提交
672

G
ge-yafang 已提交
673
**返回值:**
674

675 676 677
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
P
PaDoBoo 已提交
678

G
ge-yafang 已提交
679
**示例:**
680

681
```js
D
duanweiling 已提交
682 683 684 685 686 687 688 689 690 691 692 693
try{
    mPreference.put(KEY_TEST_STRING_ELEMENT, KEY_TEST_INT_ELEMENT).then(()=>{
        done()
        console.log("testPreferencesPromise008 end.")
    }).catch((err) => {
        console.log("put err =" + err + ", code =" + err.code +", message =" + err.message)
        expect(false).assertTrue()
    })
} catch(err) {
    console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message)
    expect(false).assertTrue()
}
P
PaDaBoo 已提交
694
```
P
PaDoBoo 已提交
695 696 697 698


### has

699
has(key: string, callback: AsyncCallback&lt;boolean&gt;): void
P
PaDoBoo 已提交
700

701
检查Preferences实例是否包含名为给定Key的存储键值对,使用callback异步回调。
P
PaDoBoo 已提交
702

P
PaDaBoo 已提交
703
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
704

G
ge-yafang 已提交
705
**参数:**
706

707 708 709
| 参数名   | 类型                         | 必填 | 说明                                                         |
| -------- | ---------------------------- | ---- | ------------------------------------------------------------ |
| key      | string                       | 是   | 要检查的存储key名称,不能为空。                              |
710
| callback | AsyncCallback&lt;boolean&gt; | 是   | 回调函数。返回Preferences实例是否包含给定key的存储键值对,true表示存在,false表示不存在。 |
P
PaDoBoo 已提交
711

G
ge-yafang 已提交
712
**示例:**
713

714
```js
D
duanweiling 已提交
715 716 717 718 719 720 721 722 723 724 725 726 727 728
try{
    mPreference.has(KEY_TEST_STRING_ELEMENT, function (err, val) {
        if (err) {
            console.log("has err =" + err + ", code =" + err.code +", message =" + err.message)
            expect(false).assertTrue()
        }
        expect(true).assertEqual(val)
        done()
        console.log("testPreferencesCallback006 end.")
    })
} catch(err) {
    console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message)
    expect(false).assertTrue()
}
P
PaDaBoo 已提交
729
```
P
PaDoBoo 已提交
730 731 732 733 734 735


### has

has(key: string): Promise&lt;boolean&gt;

736
检查Preferences实例是否包含名为给定Key的存储键值对,使用Promise异步回调。
P
PaDoBoo 已提交
737

P
PaDaBoo 已提交
738
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
739

G
ge-yafang 已提交
740
**参数:**
741

742 743 744
| 参数名 | 类型   | 必填 | 说明                            |
| ------ | ------ | ---- | ------------------------------- |
| key    | string | 是   | 要检查的存储key名称,不能为空。 |
P
PaDoBoo 已提交
745

G
ge-yafang 已提交
746
**返回值:**
747

748 749
| 类型                   | 说明                                                         |
| ---------------------- | ------------------------------------------------------------ |
750
| Promise&lt;boolean&gt; | Promise对象。返回Preferences实例是否包含给定key的存储键值对,true表示存在,false表示不存在。 |
P
PaDoBoo 已提交
751

G
ge-yafang 已提交
752
**示例:**
753 754

```js
D
duanweiling 已提交
755 756 757 758 759 760 761 762 763 764 765 766
try{
    mPreference.has(KEY_TEST_STRING_ELEMENT).then((val)=>{
        done()
        console.log("testPreferencesPromise006 end.")
    }).catch((err) => {
        console.log("has err =" + err + ", code =" + err.code +", message =" + err.message)
        expect(false).assertTrue()
    })
} catch(err) {
    console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message)
    expect(false).assertTrue()
}
P
PaDaBoo 已提交
767
```
P
PaDoBoo 已提交
768 769 770 771 772 773


### delete

delete(key: string, callback: AsyncCallback&lt;void&gt;): void

774
从Preferences实例中删除名为给定Key的存储键值对,使用callback异步回调。
P
PaDoBoo 已提交
775

P
PaDaBoo 已提交
776
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
777

G
ge-yafang 已提交
778
**参数:**
779

780 781 782 783
| 参数名   | 类型                      | 必填 | 说明                                                 |
| -------- | ------------------------- | ---- | ---------------------------------------------------- |
| key      | string                    | 是   | 要删除的存储Key名称,不能为空。                      |
| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数。当删除成功,err为undefined;否则为错误码。 |
P
PaDoBoo 已提交
784

G
ge-yafang 已提交
785
**示例:**
786

787
```js
D
duanweiling 已提交
788 789 790 791 792 793 794 795 796 797 798 799 800
try{
    mPreference.delete(KEY_TEST_STRING_ELEMENT, function(err) {
        if (err) {
            console.log("delete err =" + err + ", code =" + err.code +", message =" + err.message)
            expect(false).assertTrue()
        }
        done()
        console.log("testPreferencesCallback010 end.")
    })
} catch(err) {
    console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message)
    expect(false).assertTrue()
}
P
PaDaBoo 已提交
801
```
P
PaDoBoo 已提交
802 803 804 805 806 807


### delete

delete(key: string): Promise&lt;void&gt;

808
从Preferences实例中删除名为给定Key的存储键值对,使用Promise异步回调。
P
PaDoBoo 已提交
809

P
PaDaBoo 已提交
810
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
811

G
ge-yafang 已提交
812
**参数:**
813

814 815 816
| 参数名 | 类型   | 必填 | 说明                            |
| ------ | ------ | ---- | ------------------------------- |
| key    | string | 是   | 要删除的存储key名称,不能为空。 |
P
PaDoBoo 已提交
817

G
ge-yafang 已提交
818
**返回值:**
819

820 821 822
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
P
PaDoBoo 已提交
823

G
ge-yafang 已提交
824
**示例:**
825

826
```js
D
duanweiling 已提交
827 828 829 830 831 832 833 834 835 836 837 838
try{
    mPreference.delete(KEY_TEST_STRING_ELEMENT).then(()=>{
        done()
        console.log("testPreferencesPromise005 end.")
    }).catch((err) => {
        console.log("delete err =" + err + ", code =" + err.code +", message =" + err.message)
        expect(false).assertTrue()
    })
} catch(err) {
    console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message)
    expect(false).assertTrue()
}
P
PaDaBoo 已提交
839
```
P
PaDoBoo 已提交
840 841 842 843 844 845


### flush

flush(callback: AsyncCallback&lt;void&gt;): void

846
将当前Preferences实例的数据异步存储到首选项持久化文件中,使用callback异步回调。
P
PaDoBoo 已提交
847

P
PaDaBoo 已提交
848
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
849

G
ge-yafang 已提交
850
**参数:**
851

852 853 854
| 参数名   | 类型                      | 必填 | 说明                                                 |
| -------- | ------------------------- | ---- | ---------------------------------------------------- |
| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数。当保存成功,err为undefined;否则为错误码。 |
P
PaDoBoo 已提交
855

G
ge-yafang 已提交
856
**示例:**
857

858
```js
D
duanweiling 已提交
859 860 861 862 863 864 865 866 867 868 869 870 871
try{
    mPreference.flush(function (err) {
        if (err) {
            console.log("flush err =" + err + ", code =" + err.code +", message =" + err.message)
            expect(false).assertTrue()
        }
        done()
        console.log("testPreferencesCallback012 end.")
    })
} catch(err) {
    console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message)
    expect(false).assertTrue()
}
P
PaDaBoo 已提交
872
```
P
PaDoBoo 已提交
873 874 875 876 877 878


### flush

flush(): Promise&lt;void&gt;

879
将当前Preferences实例的数据异步存储到首选项持久化文件中,使用Promise异步回调。
P
PaDoBoo 已提交
880

P
PaDaBoo 已提交
881
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
882

G
ge-yafang 已提交
883
**返回值:**
884

885 886 887
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
P
PaDoBoo 已提交
888

G
ge-yafang 已提交
889
**示例:**
890

891
```js
D
duanweiling 已提交
892 893 894 895 896 897 898 899 900 901 902 903
try {
    mPreference.flush().then(() => {
        done()
        console.log("testPreferencesPromise012 end.")
    }).catch((err) => {
        console.log("flush err =" + err + ", code =" + err.code + ", message =" + err.message)
        expect(false).assertTrue()
    })
} catch (err) {
    console.log("trycatch err =" + err + ", code =" + err.code + ", message =" + err.message)
    expect(false).assertTrue()
}
P
PaDaBoo 已提交
904
```
P
PaDoBoo 已提交
905 906 907 908 909 910


### clear

clear(callback: AsyncCallback&lt;void&gt;): void

911
清除此Preferences实例中的所有存储,使用callback异步回调。
P
PaDoBoo 已提交
912

P
PaDaBoo 已提交
913
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
914

G
ge-yafang 已提交
915
**参数:**
916

917 918 919
| 参数名   | 类型                      | 必填 | 说明                                                 |
| -------- | ------------------------- | ---- | ---------------------------------------------------- |
| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数。当清除成功,err为undefined;否则为错误码。 |
P
PaDoBoo 已提交
920

G
ge-yafang 已提交
921
**示例:**
922

923
```js
D
duanweiling 已提交
924 925 926 927 928 929 930 931 932 933 934 935 936
try{
    mPreference.clear(function (err) {
        if (err) {
            console.log("clear err =" + err + ", code =" + err.code +", message =" + err.message)
            expect(false).assertTrue()
        }
        done()
        console.log("testPreferencesCallback011 end.")
    })
} catch(err) {
    console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message)
    expect(false).assertTrue()
}
P
PaDaBoo 已提交
937
```
P
PaDoBoo 已提交
938 939 940 941 942 943


### clear

clear(): Promise&lt;void&gt;

944
清除此Preferences实例中的所有存储,使用Promise异步回调。
P
PaDoBoo 已提交
945

P
PaDaBoo 已提交
946
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
947

G
ge-yafang 已提交
948
**返回值:**
949

950 951 952
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
P
PaDoBoo 已提交
953

G
ge-yafang 已提交
954
**示例:**
955

956
```js
D
duanweiling 已提交
957 958 959 960 961 962 963 964 965 966 967 968
try{
    mPreference.clear().then(()=>{
        done()
        console.log("testPreferencesPromise011 end.")
    }).catch((err) => {
        console.log("clear err =" + err + ", code =" + err.code +", message =" + err.message)
        expect(false).assertTrue()
    })
} catch(err) {
    console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message)
    expect(false).assertTrue()
}
P
PaDaBoo 已提交
969
```
P
PaDoBoo 已提交
970 971 972 973 974 975


### on('change')

on(type: 'change', callback: Callback&lt;{ key : string }&gt;): void

976
订阅数据变更,订阅的Key的值发生变更后,在执行[flush](#flush)方法后,触发callback回调。
P
PaDoBoo 已提交
977

P
PaDaBoo 已提交
978
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
979

G
ge-yafang 已提交
980
**参数:**
981

982 983 984 985
| 参数名   | 类型                             | 必填 | 说明                                     |
| -------- | -------------------------------- | ---- | ---------------------------------------- |
| type     | string                           | 是   | 事件类型,固定值'change',表示数据变更。 |
| callback | Callback&lt;{ key : string }&gt; | 是   | 回调对象实例。                           |
P
PaDoBoo 已提交
986

G
ge-yafang 已提交
987
**示例:**
988

989
```js
D
duanweiling 已提交
990 991 992 993 994 995
try {
    mPreference.clear();
    var observer = function (key) {
        if (key) {
            console.info('testPreferencesCallback013 key' + key);
            expect(false).assertTrue()
P
PaDaBoo 已提交
996
        }
D
duanweiling 已提交
997 998 999 1000 1001 1002 1003 1004
        expect("abcd").assertEqual(key);
    };
    await mPreference.on('change', observer);
    await mPreference.put(KEY_TEST_STRING_ELEMENT, "abcd");
} catch (error) {
    console.log("trycatch err =" + err + ", code =" + err.code + ", message =" + err.message)
    expect(false).assertTrue()
}
P
PaDaBoo 已提交
1005
```
P
PaDoBoo 已提交
1006 1007 1008 1009


### off('change')

1010
off(type: 'change', callback?: Callback&lt;{ key : string }&gt;): void
P
PaDoBoo 已提交
1011

1012
取消订阅数据变更。
P
PaDoBoo 已提交
1013

P
PaDaBoo 已提交
1014
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
1015

G
ge-yafang 已提交
1016
**参数:**
1017

1018 1019 1020 1021
| 参数名   | 类型                             | 必填 | 说明                                       |
| -------- | -------------------------------- | ---- | ------------------------------------------ |
| type     | string                           | 是   | 事件类型,固定值'change',表示数据变更。   |
| callback | Callback&lt;{ key : string }&gt; | 否   | 需要取消的回调对象实例,不填写则全部取消。 |
P
PaDoBoo 已提交
1022

G
ge-yafang 已提交
1023
**示例:**
1024

1025
```js
D
duanweiling 已提交
1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038
try {
    console.log("testPreferencesCallback015 begin.")
    var observer = function (key) {
        console.info('testPreferencesCallback015 key' + key);
        expect('').assertEqual(key);
    };
    await mPreference.on('change', observer);
    await mPreference.off('change', observer);
    await mPreference.put(KEY_TEST_STRING_ELEMENT, "abc");
} catch (error) {
    console.log("trycatch err =" + err + ", code =" + err.code + ", message =" + err.message)
    expect(false).assertTrue()
}
P
PaDaBoo 已提交
1039
```
G
ge-yafang 已提交
1040 1041 1042 1043 1044

## ValueType

用于表示允许的数据字段类型。

P
PaDaBoo 已提交
1045
**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
G
ge-yafang 已提交
1046

1047 1048 1049 1050 1051
| 类型            | 说明                           |
| --------------- | ------------------------------ |
| number          | 表示值类型为数字。             |
| string          | 表示值类型为字符串。           |
| boolean         | 表示值类型为布尔值。           |
1052 1053
| Array\<number>  | 表示值类型为数字类型的数组。   |
| Array\<boolean> | 表示值类型为布尔类型的数组。   |
1054
| Array\<string>  | 表示值类型为字符串类型的数组。 |