You need to sign in or sign up before continuing.
js-apis-data-preferences.md 35.7 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 53
import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
let preferences = null;
D
duanweiling 已提交
54

D
duanweiling 已提交
55
try {
D
duanweiling 已提交
56
    data_preferences.getPreferences(context, 'mystore', function (err, val) {
D
duanweiling 已提交
57
        if (err) {
D
duanweiling 已提交
58 59
            console.info("Failed to get preferences. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
60
        }
D
duanweiling 已提交
61 62
        preferences = object;
        console.info("Succeeded in getting preferences.");
D
duanweiling 已提交
63 64
    })
} catch (err) {
D
duanweiling 已提交
65
    console.info("Failed to get preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
66
}
P
PaDaBoo 已提交
67
```
P
PaDoBoo 已提交
68

69 70 71 72
Stage模型示例:

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

81
let preferences = null;
D
duanweiling 已提交
82
try {
D
duanweiling 已提交
83
    data_preferences.getPreferences(context, 'mystore', function (err, val) {
D
duanweiling 已提交
84
        if (err) {
D
duanweiling 已提交
85 86
            console.info("Failed to get preferences. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
87
        }
D
duanweiling 已提交
88 89
        preferences = object;
        console.info("Succeeded in getting preferences.");
D
duanweiling 已提交
90 91
    })
} catch (err) {
D
duanweiling 已提交
92
    console.info("Failed to get preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
93
}
94
```
P
PaDoBoo 已提交
95

96
## data_preferences.getPreferences
P
PaDoBoo 已提交
97

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

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

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

G
ge-yafang 已提交
104
**参数:**
105 106 107

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

G
ge-yafang 已提交
111
**返回值:**
112

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

G
ge-yafang 已提交
117
**示例:**
118

119 120
FA模型示例:

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

D
duanweiling 已提交
126
let preferences = null;
D
duanweiling 已提交
127
try{
D
duanweiling 已提交
128 129 130 131
   let promise = data_preferences.getPreferences(context, 'mystore');
	promise.then((object) => {
    	preferences = object;
    	console.info("Succeeded in getting preferences.");
D
duanweiling 已提交
132
    }).catch((err) => {
D
duanweiling 已提交
133
         console.log("Failed to get preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
134 135
    })
} catch(err) {
D
duanweiling 已提交
136
     console.log("Failed to get preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
137
}
P
PaDaBoo 已提交
138
```
P
PaDoBoo 已提交
139

140 141 142 143
Stage模型示例:

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

D
duanweiling 已提交
152
let preferences = null;
D
duanweiling 已提交
153
try{
D
duanweiling 已提交
154 155 156 157
   let promise = data_preferences.getPreferences(context, 'mystore');
	promise.then((object) => {
    	preferences = object;
    	console.info("Succeeded in getting preferences.");
D
duanweiling 已提交
158
    }).catch((err) => {
D
duanweiling 已提交
159
         console.log("Failed to get preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
160 161
    })
} catch(err) {
D
duanweiling 已提交
162
     console.log("Failed to get preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
163
}
D
duanweiling 已提交
164

165
```
P
PaDoBoo 已提交
166

167
## data_preferences.deletePreferences
P
PaDoBoo 已提交
168

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

171 172 173
从内存中移除指定的Preferences实例,使用callback异步回调。

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

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

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

G
ge-yafang 已提交
179
**参数:**
180

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

D
duanweiling 已提交
187 188 189 190 191 192 193 194
**错误码:**

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

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

G
ge-yafang 已提交
195
**示例:**
196

197 198
FA模型示例:

199
```js
200
// 获取context
201 202
import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
203

D
duanweiling 已提交
204
try {
D
duanweiling 已提交
205 206 207 208
    data_preferences.deletePreferences(context, 'mystore', function (err, val) {
         if (err) {
            console.info("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
209
        }
D
duanweiling 已提交
210
    console.info("Succeeded in deleting preferences." );
D
duanweiling 已提交
211 212
    })
} catch (err) {
D
duanweiling 已提交
213
    console.info("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
214
}
P
PaDaBoo 已提交
215
```
P
PaDoBoo 已提交
216

217 218 219 220
Stage模型示例:

```ts
// 获取context
221 222
import Ability from '@ohos.application.Ability';
let context = null;
223 224
class MainAbility extends Ability{
    onWindowStageCreate(windowStage){
225
        context = this.context;
226 227 228
    }
}

D
duanweiling 已提交
229
try {
D
duanweiling 已提交
230 231 232 233
    data_preferences.deletePreferences(context, 'mystore', function (err, val) {
         if (err) {
            console.info("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
234
        }
D
duanweiling 已提交
235
    console.info("Succeeded in deleting preferences." );
D
duanweiling 已提交
236 237
    })
} catch (err) {
D
duanweiling 已提交
238
    console.info("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
239
}
240
```
P
PaDoBoo 已提交
241

242
## data_preferences.deletePreferences
P
PaDoBoo 已提交
243

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

246 247 248
从内存中移除指定的Preferences实例,使用Promise异步回调。

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

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

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

G
ge-yafang 已提交
254
**参数:**
255 256 257

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

D
duanweiling 已提交
261 262 263 264 265 266
**返回值:**

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |

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

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

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

G
ge-yafang 已提交
275
**示例:**
276

277 278
FA模型示例:

279
```js
280
// 获取context
281 282
import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
283

D
duanweiling 已提交
284
try{
D
duanweiling 已提交
285 286 287
   let promise = data_preferences.deletePreferences(context, 'mystore');
	promise.then(() => {
    	console.info("Succeeded in deleting preferences.");
D
duanweiling 已提交
288
    }).catch((err) => {
D
duanweiling 已提交
289
       console.info("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
290 291
    })
} catch(err) {
D
duanweiling 已提交
292
         console.info("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
293
}
P
PaDaBoo 已提交
294
```
P
PaDoBoo 已提交
295

296 297 298 299
Stage模型示例:

```ts
// 获取context
300 301
import Ability from '@ohos.application.Ability';
let context = null;
302 303
class MainAbility extends Ability{
    onWindowStageCreate(windowStage){
304
        context = this.context;
305 306 307
    }
}

D
duanweiling 已提交
308
try{
D
duanweiling 已提交
309 310 311
   let promise = data_preferences.deletePreferences(context, 'mystore');
	promise.then(() => {
    	console.info("Succeeded in deleting preferences.");
D
duanweiling 已提交
312
    }).catch((err) => {
D
duanweiling 已提交
313
       console.info("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
314 315
    })
} catch(err) {
D
duanweiling 已提交
316
         console.info("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
317
}
D
duanweiling 已提交
318

319
```
P
PaDoBoo 已提交
320

321
## data_preferences.removePreferencesFromCache
P
PaDoBoo 已提交
322

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

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

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

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

G
ge-yafang 已提交
331
**参数:**
332

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

G
ge-yafang 已提交
339
**示例:**
340

341 342
FA模型示例:

343
```js
344
// 获取context
345 346
import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
347

D
duanweiling 已提交
348
try {
D
duanweiling 已提交
349 350 351 352
    data_preferences.removePreferencesFromCache(context, 'mystore', function (err, val) {
         if (err) {
            console.info("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
353
        }
D
duanweiling 已提交
354 355
    console.info("Succeeded in removing preferences.");
})
D
duanweiling 已提交
356
} catch (err) {
D
duanweiling 已提交
357
    console.info("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
358
}
P
PaDaBoo 已提交
359
```
P
PaDoBoo 已提交
360

361 362 363 364
Stage模型示例:

```ts
// 获取context
365 366
import Ability from '@ohos.application.Ability';
let context = null;
367 368
class MainAbility extends Ability{
    onWindowStageCreate(windowStage){
369
        context = this.context;
370 371 372
    }
}

D
duanweiling 已提交
373
try {
D
duanweiling 已提交
374 375 376 377
    data_preferences.removePreferencesFromCache(context, 'mystore', function (err, val) {
         if (err) {
            console.info("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
378
        }
D
duanweiling 已提交
379 380
    console.info("Succeeded in removing preferences.");
})
D
duanweiling 已提交
381
} catch (err) {
D
duanweiling 已提交
382
    console.info("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
383
}
384
```
P
PaDoBoo 已提交
385

386
## data_preferences.removePreferencesFromCache
P
PaDoBoo 已提交
387

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

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

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

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

G
ge-yafang 已提交
396
**参数:**
397 398 399

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

G
ge-yafang 已提交
403
**返回值:**
404

405 406 407
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
P
PaDoBoo 已提交
408

G
ge-yafang 已提交
409
**示例:**
410

411 412
FA模型示例:

413
```js
414
// 获取context
415 416
import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
417

D
duanweiling 已提交
418
try{
D
duanweiling 已提交
419 420 421
    let promise = data_preferences.removePreferencesFromCache(context, 'mystore');
	promise.then(() => {
    	console.info("Succeeded in removing preferences.");
D
duanweiling 已提交
422
    }).catch((err) => {
D
duanweiling 已提交
423
        console.info("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
424 425
    })
} catch(err) {
D
duanweiling 已提交
426
    console.info("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
427
}
P
PaDaBoo 已提交
428
```
P
PaDoBoo 已提交
429

430 431 432 433
Stage模型示例:

```ts
// 获取context
434 435
import Ability from '@ohos.application.Ability';
let context = null;
436 437
class MainAbility extends Ability{
    onWindowStageCreate(windowStage){
438
        context = this.context;
439 440 441
    }
}

D
duanweiling 已提交
442
try{
D
duanweiling 已提交
443 444 445
    let promise = data_preferences.removePreferencesFromCache(context, 'mystore');
	promise.then(() => {
    	console.info("Succeeded in removing preferences.");
D
duanweiling 已提交
446
    }).catch((err) => {
D
duanweiling 已提交
447
        console.info("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
448 449
    })
} catch(err) {
D
duanweiling 已提交
450
    console.info("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
451
}
D
duanweiling 已提交
452

453
```
P
PaDoBoo 已提交
454 455 456

## Preferences

457 458 459
存储实例,提供获取和修改存储数据的接口。

下列接口都需先使用[data_preferences.getPreferences](#data_preferencesgetpreferences)获取到Preferences实例,再通过此实例调用对应接口。
P
PaDoBoo 已提交
460 461 462 463 464 465


### get

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

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

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

G
ge-yafang 已提交
470
**参数:**
471

472 473 474 475 476
| 参数名   | 类型                                         | 必填 | 说明                                                         |
| -------- | -------------------------------------------- | ---- | ------------------------------------------------------------ |
| 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 已提交
477

G
ge-yafang 已提交
478
**示例:**
479 480

```js
D
duanweiling 已提交
481
try {
D
duanweiling 已提交
482
    data_preferences.get('startup', 'default', function (err, val) {
D
duanweiling 已提交
483
        if (err) {
D
duanweiling 已提交
484 485
            console.info("Failed to get value of 'startup'. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
486
        }
D
duanweiling 已提交
487
    console.info("Succeeded in getting value of 'startup'. Data: " + data);
D
duanweiling 已提交
488 489
    })
} catch (err) {
D
duanweiling 已提交
490
        console.info("Failed to get value of 'startup'. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
491
}
P
PaDaBoo 已提交
492
```
P
PaDoBoo 已提交
493 494 495 496 497 498


### get

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

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

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

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

G
ge-yafang 已提交
510
**返回值:**
511 512 513 514

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

G
ge-yafang 已提交
516
**示例:**
517

518
```js
D
duanweiling 已提交
519
try{
D
duanweiling 已提交
520 521 522
   let promise = preferences.get('startup', 'default');
	promise.then((data) => {
    	console.info("Succeeded in getting value of 'startup'. Data: " + data);
D
duanweiling 已提交
523
    }).catch((err) => {
D
duanweiling 已提交
524
       console.info("Failed to get value of 'startup'. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
525 526
    })
} catch(err) {
D
duanweiling 已提交
527
   console.info("Failed to get value of 'startup'. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
528
}
P
PaDaBoo 已提交
529
```
P
PaDoBoo 已提交
530

531 532 533 534
### getAll

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

535
获取含有所有键值的Object对象。
536 537 538 539

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

**参数:**
540

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

**示例:**
546 547

```js
D
duanweiling 已提交
548
try {
D
duanweiling 已提交
549
    preferences.getAll(function (err, value) {
D
duanweiling 已提交
550
        if (err) {
D
duanweiling 已提交
551 552
            console.info("Failed to get all key-values. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
553
        }
D
duanweiling 已提交
554 555 556
    let allKeys = Object.keys(value);
    console.info("getAll keys = " + allKeys);
    console.info("getAll object = " + JSON.stringify(value));
D
duanweiling 已提交
557 558
    })
} catch (err) {
D
duanweiling 已提交
559 560
 console.info("Failed to get all key-values. code =" + err.code + ", message =" + err.message);
};
561 562 563 564 565 566 567
```


### getAll

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

568
获取含有所有键值的Object对象。
569 570 571 572

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

**返回值:**
573

574 575 576
| 类型                  | 说明                                        |
| --------------------- | ------------------------------------------- |
| Promise&lt;Object&gt; | Promise对象,返回含有所有键值的Object对象。 |
577 578

**示例:**
579

580
```js
D
duanweiling 已提交
581
try {
D
duanweiling 已提交
582 583 584 585 586
   let promise = preferences.getAll();
promise.then((value) => {
    let allKeys = Object.keys(value);
    console.info('getAll keys = ' + allKeys);
    console.info("getAll object = " + JSON.stringify(value));
D
duanweiling 已提交
587
    }).catch((err) => {
D
duanweiling 已提交
588
         console.info("Failed to get all key-values. , code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
589 590
    })
} catch (err) {
D
duanweiling 已提交
591
    console.info("Failed to get all key-values. , code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
592
}
593
```
P
PaDoBoo 已提交
594 595 596 597 598

### put

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

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

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

G
ge-yafang 已提交
603
**参数:**
604

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

G
ge-yafang 已提交
611
**示例:**
612

613
```js
D
duanweiling 已提交
614
try{
D
duanweiling 已提交
615
    preferences.put('startup', 'auto', function (err) {
D
duanweiling 已提交
616
        if (err) {
D
duanweiling 已提交
617 618
            console.info("Failed to put value of 'startup' code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
619
        }
D
duanweiling 已提交
620
    console.info("Succeeded in putting value of 'startup'.");
D
duanweiling 已提交
621
    })
D
duanweiling 已提交
622 623
} catch (err) {
    console.info("Failed to put value of 'startup' code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
624
}
P
PaDaBoo 已提交
625
```
P
PaDoBoo 已提交
626 627 628 629 630 631


### put

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

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

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

G
ge-yafang 已提交
636
**参数:**
637

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

G
ge-yafang 已提交
643
**返回值:**
644

645 646 647
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
P
PaDoBoo 已提交
648

G
ge-yafang 已提交
649
**示例:**
650

651
```js
D
duanweiling 已提交
652
try{
D
duanweiling 已提交
653 654 655
    let promise = preferences.put('startup', 'auto');
promise.then(() => {
    console.info("Succeeded in putting value of 'startup'.");
D
duanweiling 已提交
656
    }).catch((err) => {
D
duanweiling 已提交
657
        console.info("Failed to put value of 'startup'. , code =" + err.code +", message =" + err.message);
D
duanweiling 已提交
658 659
    })
} catch(err) {
D
duanweiling 已提交
660
    console.info("Failed to put value of 'startup'. , code =" + err.code +", message =" + err.message);
D
duanweiling 已提交
661
}
P
PaDaBoo 已提交
662
```
P
PaDoBoo 已提交
663 664 665 666


### has

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

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

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

G
ge-yafang 已提交
673
**参数:**
674

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

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

682
```js
D
duanweiling 已提交
683
try{
D
duanweiling 已提交
684
   preferences.has('startup', function (err, val) {
D
duanweiling 已提交
685
        if (err) {
D
duanweiling 已提交
686 687
            console.info("Failed to check the key 'startup'. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
688
        }
D
duanweiling 已提交
689 690 691 692 693 694
    if (val) {
        console.info("The key 'startup' is contained.");
    } else {
            console.info("The key 'startup' dose not contain.");    
} catch (err) {
    console.info("Failed to check the key 'startup'. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
695
}
P
PaDaBoo 已提交
696
```
P
PaDoBoo 已提交
697 698 699 700 701 702


### has

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

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

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

G
ge-yafang 已提交
707
**参数:**
708

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

G
ge-yafang 已提交
713
**返回值:**
714

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

G
ge-yafang 已提交
719
**示例:**
720 721

```js
D
duanweiling 已提交
722
try{
D
duanweiling 已提交
723 724 725 726 727 728 729
let promise = preferences.has('startup');
promise.then((isExist) => {
    if (val) {
        console.info("The key 'startup' is contained.");
    } else {
        console.info("The key 'startup' dose not contain.");
    }
D
duanweiling 已提交
730
    }).catch((err) => {
D
duanweiling 已提交
731
       console.info("Failed to check the key 'startup'. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
732 733
    })
} catch(err) {
D
duanweiling 已提交
734
 console.info("Failed to check the key 'startup'. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
735
}
P
PaDaBoo 已提交
736
```
P
PaDoBoo 已提交
737 738 739 740 741 742


### delete

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

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

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

G
ge-yafang 已提交
747
**参数:**
748

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

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

756
```js
D
duanweiling 已提交
757
try{
D
duanweiling 已提交
758
    preferences.delete('startup', function (err) {
D
duanweiling 已提交
759
        if (err) {
D
duanweiling 已提交
760 761
            console.info("Failed to delete the key 'startup'. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
762
        }
D
duanweiling 已提交
763
    console.info("Succeeded in deleting the key 'startup'.");
D
duanweiling 已提交
764
    })
D
duanweiling 已提交
765 766
} catch (err) {
    console.info("Failed to delete the key 'startup'. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
767
}
P
PaDaBoo 已提交
768
```
P
PaDoBoo 已提交
769 770 771 772 773 774


### delete

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

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

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

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

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

G
ge-yafang 已提交
785
**返回值:**
786

787 788 789
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
P
PaDoBoo 已提交
790

G
ge-yafang 已提交
791
**示例:**
792

793
```js
D
duanweiling 已提交
794
try{
D
duanweiling 已提交
795 796 797
   let promise = preferences.delete('startup');
	promise.then(() => {
    	console.info("Succeeded in deleting the key 'startup'.");
D
duanweiling 已提交
798
    }).catch((err) => {
D
duanweiling 已提交
799
        console.log("Failed to delete the key 'startup'. code =" + err.code +", message =" + err.message);
D
duanweiling 已提交
800 801
    })
} catch(err) {
D
duanweiling 已提交
802
    console.log("Failed to delete the key 'startup'. code =" + err.code +", message =" + err.message);
D
duanweiling 已提交
803
}
P
PaDaBoo 已提交
804
```
P
PaDoBoo 已提交
805 806 807 808 809 810


### flush

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

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

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

G
ge-yafang 已提交
815
**参数:**
816

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

G
ge-yafang 已提交
821
**示例:**
822

823
```js
D
duanweiling 已提交
824
try{
D
duanweiling 已提交
825 826 827 828
    preferences.flush(function (err) {
         if (err) {
            console.info("Failed to flush. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
829
        }
D
duanweiling 已提交
830
         console.info("Succeeded in flushing.");
D
duanweiling 已提交
831
    })
D
duanweiling 已提交
832 833
} catch (err) {
    console.info("Failed to flush. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
834
}
P
PaDaBoo 已提交
835
```
P
PaDoBoo 已提交
836 837 838 839 840 841


### flush

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

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

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

G
ge-yafang 已提交
846
**返回值:**
847

848 849 850
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
P
PaDoBoo 已提交
851

G
ge-yafang 已提交
852
**示例:**
853

854
```js
D
duanweiling 已提交
855
try {
D
duanweiling 已提交
856 857 858
    let promise = preferences.flush();
promise.then(() => {
    console.info("Succeeded in flushing.");
D
duanweiling 已提交
859
    }).catch((err) => {
D
duanweiling 已提交
860
        console.info("Failed to flush. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
861 862
    })
} catch (err) {
D
duanweiling 已提交
863
   console.info("Failed to flush. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
864
}
P
PaDaBoo 已提交
865
```
P
PaDoBoo 已提交
866 867 868 869 870 871


### clear

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

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

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

G
ge-yafang 已提交
876
**参数:**
877

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

G
ge-yafang 已提交
882
**示例:**
883

884
```js
D
duanweiling 已提交
885
try{
D
duanweiling 已提交
886 887 888 889
preferences.clear(function (err) {
    if (err) {
            console.info("Failed to clear. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
890
        }
D
duanweiling 已提交
891
          console.info("Succeeded in clearing.");
D
duanweiling 已提交
892
    })
D
duanweiling 已提交
893 894
} catch (err) {
     console.info("Failed to clear. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
895
}
P
PaDaBoo 已提交
896
```
P
PaDoBoo 已提交
897 898 899 900 901 902


### clear

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

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

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

G
ge-yafang 已提交
907
**返回值:**
908

909 910 911
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
P
PaDoBoo 已提交
912

G
ge-yafang 已提交
913
**示例:**
914

915
```js
D
duanweiling 已提交
916
try{
D
duanweiling 已提交
917 918 919
    	let promise = preferences.clear()
	promise.then(() => {
    	console.info("Succeeded in clearing.");
D
duanweiling 已提交
920
    }).catch((err) => {
D
duanweiling 已提交
921
       console.info("Failed to clear. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
922 923
    })
} catch(err) {
D
duanweiling 已提交
924
    console.info("Failed to clear. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
925
}
P
PaDaBoo 已提交
926
```
P
PaDoBoo 已提交
927 928 929 930 931 932


### on('change')

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

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

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

G
ge-yafang 已提交
937
**参数:**
938

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

G
ge-yafang 已提交
944
**示例:**
945

946
```js
D
duanweiling 已提交
947
data_preferences.getPreferences(this.context, 'mystore', function (err, preferences) {
D
duanweiling 已提交
948
try {
D
duanweiling 已提交
949 950 951 952 953 954 955 956 957 958 959 960 961
   data_preferences.getPreferences(this.context, 'mystore', function (err, preferences) {
    if (err) {
        console.info("Failed to get preferences.");
        return;
    }
    let observer = function (key) {
        console.info("The key " + key + " changed.");
    }
    preferences.on('change', observer);
    preferences.put('startup', 'manual', function (err) {
        if (err) {
            console.info("Failed to put the value of 'startup'. Cause: " + err);
            return;
P
PaDaBoo 已提交
962
        }
D
duanweiling 已提交
963 964 965 966 967 968 969 970
        console.info("Succeeded in putting the value of 'startup'.");

        preferences.flush(function (err) {
            if (err) {
                console.info("Failed to flush. Cause: " + err);
                return;
            }
	    console.info("Succeeded in flushing."); // observer will be called.
D
duanweiling 已提交
971
} catch (error) {
D
duanweiling 已提交
972
     console.info("Failed to flush. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
973
}
P
PaDaBoo 已提交
974
```
P
PaDoBoo 已提交
975 976 977 978


### off('change')

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

981
取消订阅数据变更。
P
PaDoBoo 已提交
982

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

G
ge-yafang 已提交
985
**参数:**
986

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

G
ge-yafang 已提交
992
**示例:**
993

994
```js
D
duanweiling 已提交
995
try {
D
duanweiling 已提交
996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022
data_preferences.getPreferences(this.context, 'mystore', function (err, preferences) {
    if (err) {
        console.info("Failed to get preferences.");
        return;
    }
    let observer = function (key) {
        console.info("The key " + key + " changed.");
    }
    preferences.on('change', observer);
    preferences.put('startup', 'auto', function (err) {
        if (err) {
            console.info("Failed to put the value of 'startup'. Cause: " + err);
            return;
        }
        console.info("Succeeded in putting the value of 'startup'.");

        preferences.flush(function (err) {
            if (err) {
                console.info("Failed to flush. Cause: " + err);
                return;
            }
            console.info("Succeeded in flushing."); // observer will be called.
        })
        preferences.off('change', observer);
    })
})

D
duanweiling 已提交
1023
} catch (error) {
D
duanweiling 已提交
1024
  console.info("Failed to flush. code =" + err.code + ", message =" + err.message);}
P
PaDaBoo 已提交
1025
```
G
ge-yafang 已提交
1026 1027 1028 1029 1030

## ValueType

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

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

1033 1034 1035 1036 1037
| 类型            | 说明                           |
| --------------- | ------------------------------ |
| number          | 表示值类型为数字。             |
| string          | 表示值类型为字符串。           |
| boolean         | 表示值类型为布尔值。           |
1038 1039
| Array\<number>  | 表示值类型为数字类型的数组。   |
| Array\<boolean> | 表示值类型为布尔类型的数组。   |
1040
| Array\<string>  | 表示值类型为字符串类型的数组。 |