js-apis-data-preferences.md 35.9 KB
Newer Older
Z
zengyawen 已提交
1
# @ohos.data.preferences (首选项)
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   | number   | 是   | 否   | Key的最大长度限制,需小于80个字节。     |
| MAX_VALUE_LENGTH | number   | 是   | 否   | 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

| 参数名   | 类型                                             | 必填 | 说明                                                         |
| -------- | ------------------------------------------------ | ---- | ------------------------------------------------------------ |
Z
zhongjianfei 已提交
41
| context  | Context            | 是   | 应用上下文。<br>FA模型的应用Context定义见[Context](js-apis-inner-app-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 57
    data_preferences.getPreferences(context, 'mystore', function (err, val) {
        if (err) {
D
duanweiling 已提交
58 59 60 61 62
	        console.info("Failed to get preferences. code =" + err.code + ", message =" + err.message);
	        return;
	    }
	    console.info("Succeeded in getting preferences.");
	})
D
duanweiling 已提交
63
} catch (err) {
D
duanweiling 已提交
64
    console.info("Failed to get preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
65
}
P
PaDaBoo 已提交
66
```
P
PaDoBoo 已提交
67

68 69 70
Stage模型示例:

```ts
71 72
import UIAbility from '@ohos.app.ability.UIAbility';

W
wangxiyue 已提交
73
let preferences = null;
74 75

class EntryAbility extends UIAbility {
W
wangxiyue 已提交
76 77 78 79 80 81 82 83 84 85 86 87
    onWindowStageCreate(windowStage) {
        try {
            data_preferences.getPreferences(this.context, 'mystore', function (err, val) {
                if (err) {
                    console.info("Failed to get preferences. code =" + err.code + ", message =" + err.message);
                    return;
                }
                console.info("Succeeded in getting preferences.");
            })
        } catch (err) {
            console.info("Failed to get preferences. code =" + err.code + ", message =" + err.message);
        }
88 89 90
    }
}
```
P
PaDoBoo 已提交
91

92
## data_preferences.getPreferences
P
PaDoBoo 已提交
93

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

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

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

G
ge-yafang 已提交
100
**参数:**
101 102 103

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

G
ge-yafang 已提交
107
**返回值:**
108

109 110 111
| 类型                                       | 说明                               |
| ------------------------------------------ | ---------------------------------- |
| Promise&lt;[Preferences](#preferences)&gt; | Promise对象,返回Preferences实例。 |
P
PaDoBoo 已提交
112

G
ge-yafang 已提交
113
**示例:**
114

115 116
FA模型示例:

117
```js
118
// 获取context
119 120
import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
121

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

136 137 138
Stage模型示例:

```ts
139 140
import UIAbility from '@ohos.app.ability.UIAbility';

W
wangxiyue 已提交
141
let preferences = null;
142 143

class EntryAbility extends UIAbility {
W
wangxiyue 已提交
144 145 146 147 148 149 150 151 152 153 154 155
    onWindowStageCreate(windowStage) {
        try {
            let promise = data_preferences.getPreferences(this.context, 'mystore');
            promise.then((object) => {
                preferences = object;
                console.info("Succeeded in getting preferences.");
            }).catch((err) => {
                console.info("Failed to get preferences. code =" + err.code + ", message =" + err.message);
            })
        } catch(err) {
            console.info("Failed to get preferences. code =" + err.code + ", message =" + err.message);
        }
156 157 158
    }
}
```
P
PaDoBoo 已提交
159

160
## data_preferences.deletePreferences
P
PaDoBoo 已提交
161

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

164 165 166
从内存中移除指定的Preferences实例,使用callback异步回调。

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

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

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

G
ge-yafang 已提交
172
**参数:**
173

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

D
duanweiling 已提交
180 181 182 183 184 185 186 187
**错误码:**

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

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

G
ge-yafang 已提交
188
**示例:**
189

190 191
FA模型示例:

192
```js
193
// 获取context
194 195
import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
196

D
duanweiling 已提交
197
try {
D
duanweiling 已提交
198
    data_preferences.deletePreferences(context, 'mystore', function (err, val) {
D
duanweiling 已提交
199
        if (err) {
D
duanweiling 已提交
200 201
            console.info("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
202
        }
D
duanweiling 已提交
203
        console.info("Succeeded in deleting preferences." );
D
duanweiling 已提交
204 205
    })
} catch (err) {
D
duanweiling 已提交
206
    console.info("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
207
}
P
PaDaBoo 已提交
208
```
P
PaDoBoo 已提交
209

210 211 212
Stage模型示例:

```ts
213 214 215
import UIAbility from '@ohos.app.ability.UIAbility';

class EntryAbility extends UIAbility {
W
wangxiyue 已提交
216 217 218 219 220 221 222 223 224 225
    onWindowStageCreate(windowStage) {
        try {
            data_preferences.deletePreferences(this.context, 'mystore', function (err, val) {
                if (err) {
                    console.info("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
                    return;
                }
                console.info("Succeeded in deleting preferences." );
            })
        } catch (err) {
D
duanweiling 已提交
226
            console.info("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
227
        }
W
wangxiyue 已提交
228
    }
D
duanweiling 已提交
229
}
230
```
P
PaDoBoo 已提交
231

232
## data_preferences.deletePreferences
P
PaDoBoo 已提交
233

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

236 237 238
从内存中移除指定的Preferences实例,使用Promise异步回调。

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

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

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

G
ge-yafang 已提交
244
**参数:**
245 246 247

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

D
duanweiling 已提交
251 252 253 254 255 256
**返回值:**

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

D
duanweiling 已提交
257 258 259 260 261 262 263 264
**错误码:**

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

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

G
ge-yafang 已提交
265
**示例:**
266

267 268
FA模型示例:

269
```js
270
// 获取context
271 272
import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
273

D
duanweiling 已提交
274
try {
D
duanweiling 已提交
275 276 277
    let promise = data_preferences.deletePreferences(context, 'mystore');
    promise.then(() => {
        console.info("Succeeded in deleting preferences.");
D
duanweiling 已提交
278
    }).catch((err) => {
D
duanweiling 已提交
279
        console.info("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
280 281
    })
} catch(err) {
D
duanweiling 已提交
282
    console.info("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
283
}
P
PaDaBoo 已提交
284
```
P
PaDoBoo 已提交
285

286 287 288
Stage模型示例:

```ts
289 290 291
import UIAbility from '@ohos.app.ability.UIAbility';

class EntryAbility extends UIAbility {
W
wangxiyue 已提交
292 293 294 295 296 297 298 299 300 301 302
    onWindowStageCreate(windowStage) {
        try{
            let promise = data_preferences.deletePreferences(this.context, 'mystore');
            promise.then(() => {
                console.info("Succeeded in deleting preferences.");
            }).catch((err) => {
                console.info("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
            })
        } catch(err) {
            console.info("Failed to delete preferences. code =" + err.code + ", message =" + err.message);
        }
303 304 305
    }
}
```
P
PaDoBoo 已提交
306

307
## data_preferences.removePreferencesFromCache
P
PaDoBoo 已提交
308

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

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

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

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

G
ge-yafang 已提交
317
**参数:**
318

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

G
ge-yafang 已提交
325
**示例:**
326

327 328
FA模型示例:

329
```js
330
// 获取context
331 332
import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
333

D
duanweiling 已提交
334
try {
D
duanweiling 已提交
335
    data_preferences.removePreferencesFromCache(context, 'mystore', function (err, val) {
D
duanweiling 已提交
336
        if (err) {
D
duanweiling 已提交
337 338
            console.info("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
339
        }
D
duanweiling 已提交
340 341
        console.info("Succeeded in removing preferences.");
    })
D
duanweiling 已提交
342
} catch (err) {
D
duanweiling 已提交
343
    console.info("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
344
}
P
PaDaBoo 已提交
345
```
P
PaDoBoo 已提交
346

347 348 349
Stage模型示例:

```ts
350 351 352
import UIAbility from '@ohos.app.ability.UIAbility';

class EntryAbility extends UIAbility {
W
wangxiyue 已提交
353 354 355 356 357 358 359 360 361 362
    onWindowStageCreate(windowStage) {
        try {
            data_preferences.removePreferencesFromCache(this.context, 'mystore', function (err, val) {
                if (err) {
                    console.info("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
                    return;
                }
                console.info("Succeeded in removing preferences.");
            })
        } catch (err) {
D
duanweiling 已提交
363
            console.info("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
364
        }
W
wangxiyue 已提交
365
    }
D
duanweiling 已提交
366
}
D
duanweiling 已提交
367

368
```
P
PaDoBoo 已提交
369

370
## data_preferences.removePreferencesFromCache
P
PaDoBoo 已提交
371

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

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

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

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

G
ge-yafang 已提交
380
**参数:**
381 382 383

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

G
ge-yafang 已提交
387
**返回值:**
388

389 390 391
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
P
PaDoBoo 已提交
392

G
ge-yafang 已提交
393
**示例:**
394

395 396
FA模型示例:

397
```js
398
// 获取context
399 400
import featureAbility from '@ohos.ability.featureAbility';
let context = featureAbility.getContext();
401

D
duanweiling 已提交
402
try {
D
duanweiling 已提交
403 404 405
    let promise = data_preferences.removePreferencesFromCache(context, 'mystore');
	promise.then(() => {
    	console.info("Succeeded in removing preferences.");
D
duanweiling 已提交
406
    }).catch((err) => {
D
duanweiling 已提交
407
        console.info("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
408 409
    })
} catch(err) {
D
duanweiling 已提交
410
    console.info("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
411
}
P
PaDaBoo 已提交
412
```
P
PaDoBoo 已提交
413

414 415 416
Stage模型示例:

```ts
417
import UIAbility from '@ohos.app.ability.UIAbility';
W
wangxiyue 已提交
418

419
class EntryAbility extends UIAbility {
W
wangxiyue 已提交
420 421 422 423 424 425 426 427 428 429 430
    onWindowStageCreate(windowStage) {
        try {
            let promise = data_preferences.removePreferencesFromCache(this.context, 'mystore');
            promise.then(() => {
                console.info("Succeeded in removing preferences.");
            }).catch((err) => {
                console.info("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
            })
        } catch(err) {
            console.info("Failed to remove preferences. code =" + err.code + ", message =" + err.message);
        }
431 432 433
    }
}
```
P
PaDoBoo 已提交
434 435 436

## Preferences

437 438 439
存储实例,提供获取和修改存储数据的接口。

下列接口都需先使用[data_preferences.getPreferences](#data_preferencesgetpreferences)获取到Preferences实例,再通过此实例调用对应接口。
P
PaDoBoo 已提交
440 441 442 443 444 445


### get

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

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

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

G
ge-yafang 已提交
450
**参数:**
451

452 453 454 455 456
| 参数名   | 类型                                         | 必填 | 说明                                                         |
| -------- | -------------------------------------------- | ---- | ------------------------------------------------------------ |
| 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 已提交
457

G
ge-yafang 已提交
458
**示例:**
459 460

```js
D
duanweiling 已提交
461
try {
462
    preferences.get('startup', 'default', function (err, val) {
D
duanweiling 已提交
463
        if (err) {
D
duanweiling 已提交
464 465
            console.info("Failed to get value of 'startup'. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
466
        }
D
duanweiling 已提交
467
        console.info("Succeeded in getting value of 'startup'. val: " + val);
D
duanweiling 已提交
468 469
    })
} catch (err) {
D
duanweiling 已提交
470
    console.info("Failed to get value of 'startup'. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
471
}
P
PaDaBoo 已提交
472
```
P
PaDoBoo 已提交
473 474 475 476 477 478


### get

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

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

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

483
 **参数:**
484

485 486 487 488
| 参数名   | 类型                    | 必填 | 说明                                                         |
| -------- | ----------------------- | ---- | ------------------------------------------------------------ |
| key      | string                  | 是   | 要获取的存储Key名称,不能为空。                              |
| defValue | [ValueType](#valuetype) | 是   | 默认返回值。支持number、string、boolean、Array\<number>、Array\<string>、Array\<boolean>类型。 |
P
PaDoBoo 已提交
489

G
ge-yafang 已提交
490
**返回值:**
491 492 493 494

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

G
ge-yafang 已提交
496
**示例:**
497

498
```js
D
duanweiling 已提交
499
try {
D
duanweiling 已提交
500 501 502
    let promise = preferences.get('startup', 'default');
    promise.then((data) => {
        console.info("Succeeded in getting value of 'startup'. Data: " + data);
D
duanweiling 已提交
503
    }).catch((err) => {
D
duanweiling 已提交
504
        console.info("Failed to get value of 'startup'. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
505 506
    })
} catch(err) {
D
duanweiling 已提交
507
    console.info("Failed to get value of 'startup'. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
508
}
P
PaDaBoo 已提交
509
```
P
PaDoBoo 已提交
510

511 512 513 514
### getAll

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

515
获取含有所有键值的Object对象。
516 517 518 519

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

**参数:**
520

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

**示例:**
526 527

```js
D
duanweiling 已提交
528
try {
D
duanweiling 已提交
529
    preferences.getAll(function (err, value) {
D
duanweiling 已提交
530
        if (err) {
D
duanweiling 已提交
531 532
            console.info("Failed to get all key-values. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
533
        }
D
duanweiling 已提交
534 535 536
    let allKeys = Object.keys(value);
    console.info("getAll keys = " + allKeys);
    console.info("getAll object = " + JSON.stringify(value));
D
duanweiling 已提交
537 538
    })
} catch (err) {
D
duanweiling 已提交
539
    console.info("Failed to get all key-values. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
540
}
541 542 543 544 545 546 547
```


### getAll

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

548
获取含有所有键值的Object对象。
549 550 551 552

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

**返回值:**
553

554 555 556
| 类型                  | 说明                                        |
| --------------------- | ------------------------------------------- |
| Promise&lt;Object&gt; | Promise对象,返回含有所有键值的Object对象。 |
557 558

**示例:**
559

560
```js
D
duanweiling 已提交
561
try {
D
duanweiling 已提交
562 563
    let promise = preferences.getAll();
    promise.then((value) => {
D
duanweiling 已提交
564 565 566
        let allKeys = Object.keys(value);
        console.info('getAll keys = ' + allKeys);
        console.info("getAll object = " + JSON.stringify(value));
D
duanweiling 已提交
567
    }).catch((err) => {
D
duanweiling 已提交
568
        console.info("Failed to get all key-values. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
569 570
    })
} catch (err) {
D
duanweiling 已提交
571
    console.info("Failed to get all key-values. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
572
}
573
```
P
PaDoBoo 已提交
574 575 576 577 578

### put

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

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

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

G
ge-yafang 已提交
583
**参数:**
584

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

G
ge-yafang 已提交
591
**示例:**
592

593
```js
D
duanweiling 已提交
594
try {
D
duanweiling 已提交
595
    preferences.put('startup', 'auto', function (err) {
D
duanweiling 已提交
596
        if (err) {
D
duanweiling 已提交
597
            console.info("Failed to put value of 'startup'. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
598
            return;
D
duanweiling 已提交
599
        }
D
duanweiling 已提交
600
        console.info("Succeeded in putting value of 'startup'.");
D
duanweiling 已提交
601
    })
D
duanweiling 已提交
602
} catch (err) {
D
duanweiling 已提交
603
    console.info("Failed to put value of 'startup'. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
604
}
P
PaDaBoo 已提交
605
```
P
PaDoBoo 已提交
606 607 608 609 610 611


### put

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

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

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

G
ge-yafang 已提交
616
**参数:**
617

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

G
ge-yafang 已提交
623
**返回值:**
624

625 626 627
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
P
PaDoBoo 已提交
628

G
ge-yafang 已提交
629
**示例:**
630

631
```js
D
duanweiling 已提交
632
try {
D
duanweiling 已提交
633
    let promise = preferences.put('startup', 'auto');
D
duanweiling 已提交
634
    promise.then(() => {
D
duanweiling 已提交
635
        console.info("Succeeded in putting value of 'startup'.");
D
duanweiling 已提交
636
    }).catch((err) => {
D
duanweiling 已提交
637
        console.info("Failed to put value of 'startup'. code =" + err.code +", message =" + err.message);
D
duanweiling 已提交
638 639
    })
} catch(err) {
D
duanweiling 已提交
640
    console.info("Failed to put value of 'startup'. code =" + err.code +", message =" + err.message);
D
duanweiling 已提交
641
}
P
PaDaBoo 已提交
642
```
P
PaDoBoo 已提交
643 644 645 646


### has

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

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

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

G
ge-yafang 已提交
653
**参数:**
654

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

G
ge-yafang 已提交
660
**示例:**
661

662
```js
D
duanweiling 已提交
663
try {
D
duanweiling 已提交
664
    preferences.has('startup', function (err, val) {
D
duanweiling 已提交
665 666 667 668 669 670 671 672 673
        if (err) {
            console.info("Failed to check the key 'startup'. code =" + err.code + ", message =" + err.message);
            return;
        }
        if (val) {
            console.info("The key 'startup' is contained.");
        } else {
            console.info("The key 'startup' dose not contain.");
        }
D
duanweiling 已提交
674
  })
D
duanweiling 已提交
675 676
} catch (err) {
    console.info("Failed to check the key 'startup'. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
677
}
P
PaDaBoo 已提交
678
```
P
PaDoBoo 已提交
679 680 681 682 683 684


### has

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

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

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

G
ge-yafang 已提交
689
**参数:**
690

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

G
ge-yafang 已提交
695
**返回值:**
696

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

G
ge-yafang 已提交
701
**示例:**
702 703

```js
D
duanweiling 已提交
704
try {
D
duanweiling 已提交
705 706
    let promise = preferences.has('startup');
    promise.then((val) => {
D
duanweiling 已提交
707
        if (val) {
D
duanweiling 已提交
708
            console.info("The key 'startup' is contained.");
D
duanweiling 已提交
709
        } else {
D
duanweiling 已提交
710
            console.info("The key 'startup' dose not contain.");
D
duanweiling 已提交
711
        }
D
duanweiling 已提交
712
    }).catch((err) => {
D
duanweiling 已提交
713
        console.info("Failed to check the key 'startup'. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
714 715
  })
} catch(err) {
D
duanweiling 已提交
716
    console.info("Failed to check the key 'startup'. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
717
}
P
PaDaBoo 已提交
718
```
P
PaDoBoo 已提交
719 720 721 722 723 724


### delete

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

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

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

G
ge-yafang 已提交
729
**参数:**
730

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

G
ge-yafang 已提交
736
**示例:**
737

738
```js
D
duanweiling 已提交
739
try {
D
duanweiling 已提交
740
    preferences.delete('startup', function (err) {
D
duanweiling 已提交
741
        if (err) {
D
duanweiling 已提交
742 743
            console.info("Failed to delete the key 'startup'. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
744
        }
D
duanweiling 已提交
745
        console.info("Succeeded in deleting the key 'startup'.");
D
duanweiling 已提交
746
    })
D
duanweiling 已提交
747 748
} catch (err) {
    console.info("Failed to delete the key 'startup'. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
749
}
P
PaDaBoo 已提交
750
```
P
PaDoBoo 已提交
751 752 753 754 755 756


### delete

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

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

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

G
ge-yafang 已提交
761
**参数:**
762

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

G
ge-yafang 已提交
767
**返回值:**
768

769 770 771
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
P
PaDoBoo 已提交
772

G
ge-yafang 已提交
773
**示例:**
774

775
```js
D
duanweiling 已提交
776
try {
D
duanweiling 已提交
777
    let promise = preferences.delete('startup');
D
duanweiling 已提交
778
	promise.then(() => {
D
duanweiling 已提交
779
        console.info("Succeeded in deleting the key 'startup'.");
D
duanweiling 已提交
780
    }).catch((err) => {
W
wangxiyue 已提交
781
        console.info("Failed to delete the key 'startup'. code =" + err.code +", message =" + err.message);
D
duanweiling 已提交
782 783
    })
} catch(err) {
W
wangxiyue 已提交
784
    console.info("Failed to delete the key 'startup'. code =" + err.code +", message =" + err.message);
D
duanweiling 已提交
785
}
P
PaDaBoo 已提交
786
```
P
PaDoBoo 已提交
787 788 789 790 791 792


### flush

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

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

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

G
ge-yafang 已提交
797
**参数:**
798

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

G
ge-yafang 已提交
803
**示例:**
804

805
```js
D
duanweiling 已提交
806
try {
D
duanweiling 已提交
807
    preferences.flush(function (err) {
D
duanweiling 已提交
808
        if (err) {
D
duanweiling 已提交
809 810
            console.info("Failed to flush. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
811
        }
D
duanweiling 已提交
812
        console.info("Succeeded in flushing.");
D
duanweiling 已提交
813
    })
D
duanweiling 已提交
814 815
} catch (err) {
    console.info("Failed to flush. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
816
}
P
PaDaBoo 已提交
817
```
P
PaDoBoo 已提交
818 819 820 821 822 823


### flush

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

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

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

G
ge-yafang 已提交
828
**返回值:**
829

830 831 832
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
P
PaDoBoo 已提交
833

G
ge-yafang 已提交
834
**示例:**
835

836
```js
D
duanweiling 已提交
837
try {
D
duanweiling 已提交
838
    let promise = preferences.flush();
D
duanweiling 已提交
839
    promise.then(() => {
D
duanweiling 已提交
840
        console.info("Succeeded in flushing.");
D
duanweiling 已提交
841
    }).catch((err) => {
D
duanweiling 已提交
842
        console.info("Failed to flush. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
843 844
    })
} catch (err) {
D
duanweiling 已提交
845
    console.info("Failed to flush. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
846
}
P
PaDaBoo 已提交
847
```
P
PaDoBoo 已提交
848 849 850 851 852 853


### clear

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

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

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

G
ge-yafang 已提交
858
**参数:**
859

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

G
ge-yafang 已提交
864
**示例:**
865

866
```js
D
duanweiling 已提交
867 868 869
try {
	preferences.clear(function (err) {
        if (err) {
D
duanweiling 已提交
870 871
            console.info("Failed to clear. code =" + err.code + ", message =" + err.message);
            return;
D
duanweiling 已提交
872
        }
D
duanweiling 已提交
873
        console.info("Succeeded in clearing.");
D
duanweiling 已提交
874
    })
D
duanweiling 已提交
875
} catch (err) {
D
duanweiling 已提交
876
    console.info("Failed to clear. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
877
}
P
PaDaBoo 已提交
878
```
P
PaDoBoo 已提交
879 880 881 882 883 884


### clear

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

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

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

G
ge-yafang 已提交
889
**返回值:**
890

891 892 893
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
P
PaDoBoo 已提交
894

G
ge-yafang 已提交
895
**示例:**
896

897
```js
D
duanweiling 已提交
898 899
try {
    let promise = preferences.clear();
D
duanweiling 已提交
900 901
	promise.then(() => {
    	console.info("Succeeded in clearing.");
D
duanweiling 已提交
902
    }).catch((err) => {
D
duanweiling 已提交
903
        console.info("Failed to clear. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
904 905
    })
} catch(err) {
D
duanweiling 已提交
906
    console.info("Failed to clear. code =" + err.code + ", message =" + err.message);
D
duanweiling 已提交
907
}
P
PaDaBoo 已提交
908
```
P
PaDoBoo 已提交
909 910 911 912 913 914


### on('change')

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

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

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

G
ge-yafang 已提交
919
**参数:**
920

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

G
ge-yafang 已提交
926
**示例:**
927

928
```js
D
duanweiling 已提交
929
try {
D
duanweiling 已提交
930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950
	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;
			}
			console.info("Succeeded in putting the value of 'startup'.");

			preferences.flush(function (err) {
				if (err) {
					console.info("Failed to flush. Cause: " + err);
					return;
				}
D
duanweiling 已提交
951
				console.info("Succeeded in flushing.");
D
duanweiling 已提交
952 953 954 955 956 957
			})
		})
	})
} catch (err) {
	console.info("Failed to flush. code =" + err.code + ", message =" + err.message);
}
P
PaDaBoo 已提交
958
```
P
PaDoBoo 已提交
959 960 961 962


### off('change')

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

965
取消订阅数据变更。
P
PaDoBoo 已提交
966

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

G
ge-yafang 已提交
969
**参数:**
970

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

G
ge-yafang 已提交
976
**示例:**
977

978
```js
D
duanweiling 已提交
979
try {
D
duanweiling 已提交
980
    data_preferences.getPreferences(this.context, 'mystore', function (err, preferences) {
D
duanweiling 已提交
981
        if (err) {
D
duanweiling 已提交
982
            console.info("Failed to get preferences.");
D
duanweiling 已提交
983 984
            return;
        }
D
duanweiling 已提交
985 986 987 988 989
        let observer = function (key) {
            console.info("The key " + key + " changed.");
        }
        preferences.on('change', observer);
        preferences.put('startup', 'auto', function (err) {
D
duanweiling 已提交
990
            if (err) {
D
duanweiling 已提交
991
                console.info("Failed to put the value of 'startup'. Cause: " + err);
D
duanweiling 已提交
992 993
                return;
            }
D
duanweiling 已提交
994 995 996 997 998 999 1000
            console.info("Succeeded in putting the value of 'startup'.");

            preferences.flush(function (err) {
                if (err) {
                    console.info("Failed to flush. Cause: " + err);
                    return;
                }
D
duanweiling 已提交
1001
                console.info("Succeeded in flushing.");
D
duanweiling 已提交
1002 1003
            })
            preferences.off('change', observer);
D
duanweiling 已提交
1004 1005
        })
    })
D
duanweiling 已提交
1006
} catch (err) {
D
duanweiling 已提交
1007 1008
    console.info("Failed to flush. code =" + err.code + ", message =" + err.message);
}
P
PaDaBoo 已提交
1009
```
G
ge-yafang 已提交
1010 1011 1012 1013 1014

## ValueType

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

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

1017 1018 1019 1020 1021
| 类型            | 说明                           |
| --------------- | ------------------------------ |
| number          | 表示值类型为数字。             |
| string          | 表示值类型为字符串。           |
| boolean         | 表示值类型为布尔值。           |
1022 1023
| Array\<number>  | 表示值类型为数字类型的数组。   |
| Array\<boolean> | 表示值类型为布尔类型的数组。   |
1024
| Array\<string>  | 表示值类型为字符串类型的数组。 |