1# Preferences
2
3
4## 概述
5
6首选项模块(Preferences)提供Key-Value键值型数据(后续简称KV数据)的处理接口,实现对轻量级KV数据的查询、修改和持久化功能。
7
8**系统能力:** SystemCapability.DistributedDataManager.Preferences.Core
9
10**起始版本:** 13
11
12
13## 汇总
14
15
16### 文件
17
18| 名称 | 描述 | 
19| -------- | -------- |
20| [oh_preferences.h](oh__preferences_8h.md) | 提供访问Preferences对象的接口与数据结构。 | 
21| [oh_preferences_option.h](oh__preferences__option_8h.md) | 提供访问Preferences配置选项(PreferencesOption)的接口与数据结构。 | 
22| [oh_preferences_value.h](oh__preferences__value_8h.md) | 提供访问Preferences值(PreferencesValue)对象的接口、枚举类型与数据结构。 | 
23
24
25### 类型定义
26
27| 名称 | 描述 | 
28| -------- | -------- |
29| typedef struct [OH_Preferences](#oh_preferences) [OH_Preferences](#oh_preferences) | 定义Preferences对象类型。 | 
30| typedef void(\* [OH_PreferencesDataObserver](#oh_preferencesdataobserver)) (void \*context, const [OH_PreferencesPair](#oh_preferencespair) \*pairs, uint32_t count) | 定义数据变更触发的回调函数类型。 | 
31| typedef enum [OH_Preferences_ErrCode](#oh_preferences_errcode) [OH_Preferences_ErrCode](#oh_preferences_errcode) | 错误码信息。 | 
32| typedef struct [OH_PreferencesOption](#oh_preferencesoption) [OH_PreferencesOption](#oh_preferencesoption) | 定义Preferences配置选项的数据结构。 | 
33| typedef enum [Preference_ValueType](#preference_valuetype) [Preference_ValueType](#preference_valuetype) | 定义PreferencesValue的数据类型。 | 
34| typedef struct [OH_PreferencesPair](#oh_preferencespair) [OH_PreferencesPair](#oh_preferencespair) | 定义Preferences使用的KV数据对象类型。 | 
35| typedef struct [OH_PreferencesValue](#oh_preferencesvalue) [OH_PreferencesValue](#oh_preferencesvalue) | 定义PreferencesValue对象类型。 | 
36
37
38### 枚举
39
40| 名称 | 描述 | 
41| -------- | -------- |
42| [OH_Preferences_ErrCode](#oh_preferences_errcode-1) {<br/>PREFERENCES_OK = 0, PREFERENCES_ERROR_INVALID_PARAM = 401, PREFERENCES_ERROR_NOT_SUPPORTED = 801, PREFERENCES_ERROR_BASE = 15500000,<br/>PREFERENCES_ERROR_DELETE_FILE = 15500010, PREFERENCES_ERROR_STORAGE = 15500011, PREFERENCES_ERROR_MALLOC = 15500012, PREFERENCES_ERROR_KEY_NOT_FOUND = 15500013,<br/>PREFERENCES_ERROR_GET_DATAOBSMGRCLIENT = 15500019<br/>} | 错误码信息。 | 
43| [Preference_ValueType](#preference_valuetype-1) {<br/>PREFERENCE_TYPE_NULL = 0, PREFERENCE_TYPE_INT, PREFERENCE_TYPE_BOOL, PREFERENCE_TYPE_STRING,<br/>PREFERENCE_TYPE_BUTT<br/>} | 定义PreferencesValue的数据类型。 | 
44
45
46### 函数
47
48| 名称 | 描述 | 
49| -------- | -------- |
50| [OH_Preferences](#oh_preferences) \* [OH_Preferences_Open](#oh_preferences_open) ([OH_PreferencesOption](#oh_preferencesoption) \*option, int \*errCode) | 打开一个Preferences实例对象并创建指向它的指针。 当不再需要使用指针时,请使用[OH_Preferences_Close](#oh_preferences_close)关闭实例对象。 | 
51| int [OH_Preferences_Close](#oh_preferences_close) ([OH_Preferences](#oh_preferences) \*preference) | 关闭一个Preferences实例对象。 | 
52| int [OH_Preferences_GetInt](#oh_preferences_getint) ([OH_Preferences](#oh_preferences) \*preference, const char \*key, int \*value) | 获取Preferences实例对象中Key对应的整型值。 | 
53| int [OH_Preferences_GetBool](#oh_preferences_getbool) ([OH_Preferences](#oh_preferences) \*preference, const char \*key, bool \*value) | 获取Preferences实例对象中Key对应的布尔值。 | 
54| int [OH_Preferences_GetString](#oh_preferences_getstring) ([OH_Preferences](#oh_preferences) \*preference, const char \*key, char \*\*value, uint32_t \*valueLen) | 获取Preferences实例对象中Key对应的字符串。 | 
55| void [OH_Preferences_FreeString](#oh_preferences_freestring) (char \*string) | 释放从Preferences实例对象中获取的字符串。 | 
56| int [OH_Preferences_SetInt](#oh_preferences_setint) ([OH_Preferences](#oh_preferences) \*preference, const char \*key, int value) | 根据Key设置Preferences实例对象中的整型值。 | 
57| int [OH_Preferences_SetBool](#oh_preferences_setbool) ([OH_Preferences](#oh_preferences) \*preference, const char \*key, bool value) | 根据Key设置Preferences实例对象中的布尔值。 | 
58| int [OH_Preferences_SetString](#oh_preferences_setstring) ([OH_Preferences](#oh_preferences) \*preference, const char \*key, const char \*value) | 根据Key设置Preferences实例对象中的字符串。 | 
59| int [OH_Preferences_Delete](#oh_preferences_delete) ([OH_Preferences](#oh_preferences) \*preference, const char \*key) | 在Preferences实例对象中删除Key对应的KV数据。 | 
60| int [OH_Preferences_RegisterDataObserver](#oh_preferences_registerdataobserver) ([OH_Preferences](#oh_preferences) \*preference, void \*context, [OH_PreferencesDataObserver](#oh_preferencesdataobserver) observer, const char \*keys[], uint32_t keyCount) | 对选取的Key注册数据变更订阅。订阅的Key的值发生变更后,在调用OH_Preferences_Close()后触发回调。 | 
61| int [OH_Preferences_UnregisterDataObserver](#oh_preferences_unregisterdataobserver) ([OH_Preferences](#oh_preferences) \*preference, void \*context, [OH_PreferencesDataObserver](#oh_preferencesdataobserver) observer, const char \*keys[], uint32_t keyCount) | 取消注册选取Key的数据变更订阅。 | 
62| [OH_PreferencesOption](#oh_preferencesoption) \* [OH_PreferencesOption_Create](#oh_preferencesoption_create) (void) | 创建一个Preferences配置选项的[OH_PreferencesOption](#oh_preferencesoption)实例对象以及指向它的指针。 当不再需要使用指针时,请使用[OH_PreferencesOption_Destroy](#oh_preferencesoption_destroy)销毁实例对象,否则会导致内存泄漏。 | 
63| int [OH_PreferencesOption_SetFileName](#oh_preferencesoption_setfilename) ([OH_PreferencesOption](#oh_preferencesoption) \*option, const char \*fileName) | 设置Preferences配置选项[OH_PreferencesOption](#oh_preferencesoption)实例对象的文件名称。 | 
64| int [OH_PreferencesOption_SetBundleName](#oh_preferencesoption_setbundlename) ([OH_PreferencesOption](#oh_preferencesoption) \*option, const char \*bundleName) | 设置Preferences配置选项[OH_PreferencesOption](#oh_preferencesoption)实例对象的包名称。 | 
65| int [OH_PreferencesOption_SetDataGroupId](#oh_preferencesoption_setdatagroupid) ([OH_PreferencesOption](#oh_preferencesoption) \*option, const char \*dataGroupId) | 设置Preferences配置选项[OH_PreferencesOption](#oh_preferencesoption)实例对象的应用组ID。 | 
66| int [OH_PreferencesOption_Destroy](#oh_preferencesoption_destroy) ([OH_PreferencesOption](#oh_preferencesoption) \*option) | 销毁Preferences配置选项[OH_PreferencesOption](#oh_preferencesoption)实例。 | 
67| const char \* [OH_PreferencesPair_GetKey](#oh_preferencespair_getkey) (const [OH_PreferencesPair](#oh_preferencespair) \*pairs, uint32_t index) | 获取KV数据中索引对应数据的键。 | 
68| const [OH_PreferencesValue](#oh_preferencesvalue) \* [OH_PreferencesPair_GetPreferencesValue](#oh_preferencespair_getpreferencesvalue) (const [OH_PreferencesPair](#oh_preferencespair) \*pairs, uint32_t index) | 获取KV数据数组中索引对应的值。 | 
69| [Preference_ValueType](#preference_valuetype) [OH_PreferencesValue_GetValueType](#oh_preferencesvalue_getvaluetype) (const [OH_PreferencesValue](#oh_preferencesvalue) \*object) | 获取PreferencesValue对象的数据类型。 | 
70| int [OH_PreferencesValue_GetInt](#oh_preferencesvalue_getint) (const [OH_PreferencesValue](#oh_preferencesvalue) \*object, int \*value) | 从PreferencesValue对象[OH_PreferencesValue](#oh_preferencesvalue)中获取一个整型值。 | 
71| int [OH_PreferencesValue_GetBool](#oh_preferencesvalue_getbool) (const [OH_PreferencesValue](#oh_preferencesvalue) \*object, bool \*value) | 从PreferencesValue对象[OH_PreferencesValue](#oh_preferencesvalue)中获取一个布尔值。 | 
72| int [OH_PreferencesValue_GetString](#oh_preferencesvalue_getstring) (const [OH_PreferencesValue](#oh_preferencesvalue) \*object, char \*\*value, uint32_t \*valueLen) | 从PreferencesValue对象[OH_PreferencesValue](#oh_preferencesvalue)中获取字符串。 | 
73
74
75## 类型定义说明
76
77
78### OH_Preferences
79
80```
81typedef struct OH_Preferences OH_Preferences
82```
83
84**描述**
85
86定义Preferences对象类型。
87
88**起始版本:** 13
89
90
91### OH_Preferences_ErrCode
92
93```
94typedef enum OH_Preferences_ErrCode OH_Preferences_ErrCode
95```
96
97**描述**
98
99错误码信息。
100
101**起始版本:** 13
102
103
104### OH_PreferencesDataObserver
105
106```
107typedef void(*OH_PreferencesDataObserver) (void *context, const OH_PreferencesPair *pairs, uint32_t count)
108```
109
110**描述**
111
112定义数据变更触发的回调函数类型。
113
114**起始版本:** 13
115
116**参数:**
117
118| 名称 | 描述 | 
119| -------- | -------- |
120| context | 应用上下文的指针。 | 
121| pairs | 发生变更的KV数据的指针。 | 
122| count | 发生变更的KV数据的数量。 | 
123
124**参见:**
125
126[OH_PreferencesPair](#oh_preferencespair)
127
128
129### OH_PreferencesOption
130
131```
132typedef struct OH_PreferencesOption OH_PreferencesOption
133```
134
135**描述**
136
137定义Preferences配置选项的数据结构。
138
139**起始版本:** 13
140
141
142### OH_PreferencesPair
143
144```
145typedef struct OH_PreferencesPair OH_PreferencesPair
146```
147
148**描述**
149
150定义Preferences使用的KV数据对象类型。
151
152**起始版本:** 13
153
154
155### OH_PreferencesValue
156
157```
158typedef struct OH_PreferencesValue OH_PreferencesValue
159```
160
161**描述**
162
163定义PreferencesValue对象类型。
164
165**起始版本:** 13
166
167
168### Preference_ValueType
169
170```
171typedef enum Preference_ValueType Preference_ValueType
172```
173
174**描述**
175
176定义PreferencesValue的数据类型。
177
178**起始版本:** 13
179
180
181## 枚举类型说明
182
183
184### OH_Preferences_ErrCode
185
186```
187enum OH_Preferences_ErrCode
188```
189
190**描述**
191
192错误码信息。
193
194**起始版本:** 13
195
196| 枚举值 | 描述 | 
197| -------- | -------- |
198| PREFERENCES_OK | 操作执行成功 | 
199| PREFERENCES_ERROR_INVALID_PARAM | 参数不合法 | 
200| PREFERENCES_ERROR_NOT_SUPPORTED | 系统能力不支持 | 
201| PREFERENCES_ERROR_BASE | 基准错误码 | 
202| PREFERENCES_ERROR_DELETE_FILE | 删除文件失败 | 
203| PREFERENCES_ERROR_STORAGE | 存储异常 | 
204| PREFERENCES_ERROR_MALLOC | 申请内存失败 | 
205| PREFERENCES_ERROR_KEY_NOT_FOUND | Key不存在 | 
206| PREFERENCES_ERROR_GET_DATAOBSMGRCLIENT | 获取数据变更订阅服务失败 | 
207
208
209### Preference_ValueType
210
211```
212enum Preference_ValueType
213```
214
215**描述**
216
217定义PreferencesValue的数据类型。
218
219**起始版本:** 13
220
221| 枚举值 | 描述 | 
222| -------- | -------- |
223| PREFERENCE_TYPE_NULL | 空类型 | 
224| PREFERENCE_TYPE_INT | 整型类型 | 
225| PREFERENCE_TYPE_BOOL | 布尔类型 | 
226| PREFERENCE_TYPE_STRING | 字符串类型 | 
227| PREFERENCE_TYPE_BUTT | 结束类型 | 
228
229
230## 函数说明
231
232
233### OH_Preferences_Close()
234
235```
236int OH_Preferences_Close (OH_Preferences *preference)
237```
238
239**描述**
240
241关闭一个Preferences实例对象。
242
243**起始版本:** 13
244
245**参数:**
246
247| 名称 | 描述 | 
248| -------- | -------- |
249| preference | 指向需要关闭的[OH_Preferences](#oh_preferences)实例对象的指针。 | 
250
251**返回:**
252
253返回执行的错误码,详见[OH_Preferences_ErrCode](#oh_preferences_errcode)。
254
255若错误码为PREFERENCES_OK,表示操作成功。
256
257若错误码为PREFERENCES_ERROR_INVALID_PARAM,表示参数不合法。
258
259若错误码为PREFERENCES_ERROR_STORAGE,表示存储异常。
260
261若错误码为PREFERENCES_ERROR_MALLOC,表示内存分配失败。
262
263**参见:**
264
265[OH_Preferences](#oh_preferences)
266
267[OH_Preferences_ErrCode](#oh_preferences_errcode)
268
269
270### OH_Preferences_Delete()
271
272```
273int OH_Preferences_Delete (OH_Preferences *preference, const char *key )
274```
275
276**描述**
277
278在Preferences实例对象中删除Key对应的KV数据。
279
280**起始版本:** 13
281
282**参数:**
283
284| 名称 | 描述 | 
285| -------- | -------- |
286| preference | 指向目标[OH_Preferences](#oh_preferences)实例对象的指针。 | 
287| key | 指向需要删除的Key的指针。 | 
288
289**返回:**
290
291返回执行的错误码。
292
293若错误码为PREFERENCES_OK,表示操作成功。
294
295若错误码为PREFERENCES_ERROR_INVALID_PARAM,表示参数不合法。
296
297若错误码为PREFERENCES_ERROR_STORAGE,表示存储异常。
298
299若错误码为PREFERENCES_ERROR_MALLOC,表示内存分配失败。
300
301**参见:**
302
303[OH_Preferences](#oh_preferences)
304
305[OH_Preferences_ErrCode](#oh_preferences_errcode)
306
307
308### OH_Preferences_FreeString()
309
310```
311void OH_Preferences_FreeString (char *string)
312```
313
314**描述**
315
316释放从Preferences实例对象中获取的字符串。
317
318**起始版本:** 13
319
320**参数:**
321
322| 名称 | 描述 | 
323| -------- | -------- |
324| string | 需要释放的字符串指针。 | 
325
326**参见:**
327
328[OH_Preferences](#oh_preferences)
329
330
331### OH_Preferences_GetBool()
332
333```
334int OH_Preferences_GetBool (OH_Preferences *preference, const char *key, bool *value )
335```
336
337**描述**
338
339获取Preferences实例对象中Key对应的布尔值。
340
341**起始版本:** 13
342
343**参数:**
344
345| 名称 | 描述 | 
346| -------- | -------- |
347| preference | 指向目标[OH_Preferences](#oh_preferences)实例对象的指针。 | 
348| key | 需要获取的Key的指针。 | 
349| value | 该参数作为出参使用,表示指向获取到的布尔值的指针。 | 
350
351**返回:**
352
353返回执行的错误码。
354
355若错误码为PREFERENCES_OK,表示操作成功。
356
357若错误码为PREFERENCES_ERROR_INVALID_PARAM,表示参数不合法。
358
359若错误码为PREFERENCES_ERROR_STORAGE,表示存储异常。
360
361若错误码为PREFERENCES_ERROR_MALLOC,表示内存分配失败。
362
363若错误码为PREFERENCES_ERROR_KEY_NOT_FOUND,表示查询的key不存在。
364
365**参见:**
366
367[OH_Preferences](#oh_preferences)
368
369[OH_Preferences_ErrCode](#oh_preferences_errcode)
370
371
372### OH_Preferences_GetInt()
373
374```
375int OH_Preferences_GetInt (OH_Preferences *preference, const char *key, int *value )
376```
377
378**描述**
379
380获取Preferences实例对象中Key对应的整型值。
381
382**起始版本:** 13
383
384**参数:**
385
386| 名称 | 描述 | 
387| -------- | -------- |
388| preference | 指向目标[OH_Preferences](#oh_preferences)实例对象的指针。 | 
389| key | 需要获取的Key的指针。 | 
390| value | 该参数作为出参使用,表示指向获取到的整型值的指针。 | 
391
392**返回:**
393
394返回执行的错误码。
395
396若错误码为PREFERENCES_OK,表示操作成功。
397
398若错误码为PREFERENCES_ERROR_INVALID_PARAM,表示参数不合法。
399
400若错误码为PREFERENCES_ERROR_STORAGE,表示存储异常。
401
402若错误码为PREFERENCES_ERROR_MALLOC,表示内存分配失败。
403
404若错误码为PREFERENCES_ERROR_KEY_NOT_FOUND,表示查询的Key不存在。
405
406**参见:**
407
408[OH_Preferences](#oh_preferences)
409
410[OH_Preferences_ErrCode](#oh_preferences_errcode)
411
412
413### OH_Preferences_GetString()
414
415```
416int OH_Preferences_GetString (OH_Preferences *preference, const char *key, char **value, uint32_t *valueLen )
417```
418
419**描述**
420
421获取Preferences实例对象中Key对应的字符串。
422
423**起始版本:** 13
424
425**参数:**
426
427| 名称 | 描述 | 
428| -------- | -------- |
429| preference | 指向目标[OH_Preferences](#oh_preferences)实例对象的指针。 | 
430| key | 需要获取的Key的指针。 | 
431| value | 该参数作为出参使用,表示指向获取到的字符串的二级指针,使用完毕后需要调用释放函数[OH_Preferences_FreeString](#oh_preferences_freestring)释放内存。 | 
432| valueLen | 该参数作为出参使用,表示获取到的字符串长度的指针。 | 
433
434**返回:**
435
436返回执行的错误码。
437
438若错误码为PREFERENCES_OK,表示操作成功。
439
440若错误码为PREFERENCES_ERROR_INVALID_PARAM,表示参数不合法。
441
442若错误码为PREFERENCES_ERROR_STORAGE,表示存储异常。
443
444若错误码为PREFERENCES_ERROR_MALLOC,表示内存分配失败。
445
446若错误码为PREFERENCES_ERROR_KEY_NOT_FOUND,表示查询的Key不存在。
447
448**参见:**
449
450[OH_Preferences](#oh_preferences)
451
452[OH_Preferences_ErrCode](#oh_preferences_errcode)
453
454
455### OH_Preferences_Open()
456
457```
458OH_Preferences* OH_Preferences_Open (OH_PreferencesOption *option, int *errCode )
459```
460
461**描述**
462
463打开一个Preferences实例对象并创建指向它的指针。 当不再需要使用指针时,请使用[OH_Preferences_Close](#oh_preferences_close)关闭实例对象。
464
465**起始版本:** 13
466
467**参数:**
468
469| 名称 | 描述 | 
470| -------- | -------- |
471| option | 指向Preferences配置选项[OH_PreferencesOption](#oh_preferencesoption)的指针。 | 
472| errCode | 该参数作为出参使用,表示指向返回错误码的指针,详见[OH_Preferences_ErrCode](#oh_preferences_errcode)。 | 
473
474**返回:**
475
476当操作成功时,返回指向打开的Preferences对象[OH_Preferences](#oh_preferences)实例对象的指针,失败返回空指针。
477
478**参见:**
479
480[OH_Preferences](#oh_preferences)
481
482[OH_PreferencesOption](#oh_preferencesoption)
483
484[OH_Preferences_ErrCode](#oh_preferences_errcode)
485
486
487### OH_Preferences_RegisterDataObserver()
488
489```
490int OH_Preferences_RegisterDataObserver (OH_Preferences *preference, void *context, OH_PreferencesDataObserver observer, const char *keys[], uint32_t keyCount )
491```
492
493**描述**
494
495对选取的Key注册数据变更订阅。订阅的Key的值发生变更后,在调用OH_Preferences_Close()后触发回调。
496
497**起始版本:** 13
498
499**参数:**
500
501| 名称 | 描述 | 
502| -------- | -------- |
503| preference | 指向目标[OH_Preferences](#oh_preferences)实例对象的指针。 | 
504| context | 应用上下文的指针。 | 
505| observer | 订阅数据变更关联的回调函数[OH_PreferencesDataObserver](#oh_preferencesdataobserver)。 | 
506| keys | 需要订阅的Key数组。 | 
507| keyCount | 需要订阅的Key的数量。 | 
508
509**返回:**
510
511返回执行的错误码。
512
513若错误码为PREFERENCES_OK,表示操作成功。
514
515若错误码为PREFERENCES_ERROR_INVALID_PARAM,表示参数不合法。
516
517若错误码为PREFERENCES_ERROR_STORAGE,表示存储异常。
518
519若错误码为PREFERENCES_ERROR_MALLOC,表示内存分配失败。
520
521若错误码为PREFERENCES_ERROR_GET_DATAOBSMGRCLIENT,表示获取数据变更订阅服务失败。
522
523**参见:**
524
525[OH_Preferences](#oh_preferences)
526
527[OH_PreferencesDataObserver](#oh_preferencesdataobserver)
528
529[OH_Preferences_ErrCode](#oh_preferences_errcode)
530
531
532### OH_Preferences_SetBool()
533
534```
535int OH_Preferences_SetBool (OH_Preferences *preference, const char *key, bool value )
536```
537
538**描述**
539
540根据Key设置Preferences实例对象中的布尔值。
541
542**起始版本:** 13
543
544**参数:**
545
546| 名称 | 描述 | 
547| -------- | -------- |
548| preference | 指向目标[OH_Preferences](#oh_preferences)实例对象的指针。 | 
549| key | 指向需要设置的Key的指针。 | 
550| value | 需要设置的布尔值。 | 
551
552**返回:**
553
554返回执行的错误码。
555
556若错误码为PREFERENCES_OK,表示操作成功。
557
558若错误码为PREFERENCES_ERROR_INVALID_PARAM,表示参数不合法。
559
560若错误码为PREFERENCES_ERROR_STORAGE,表示存储异常。
561
562若错误码为PREFERENCES_ERROR_MALLOC,表示内存分配失败。
563
564**参见:**
565
566[OH_Preferences](#oh_preferences)
567
568[OH_Preferences_ErrCode](#oh_preferences_errcode)
569
570
571### OH_Preferences_SetInt()
572
573```
574int OH_Preferences_SetInt (OH_Preferences *preference, const char *key, int value )
575```
576
577**描述**
578
579根据Key设置Preferences实例对象中的整型值。
580
581**起始版本:** 13
582
583**参数:**
584
585| 名称 | 描述 | 
586| -------- | -------- |
587| preference | 指向目标[OH_Preferences](#oh_preferences)实例对象的指针。 | 
588| key | 指向需要设置的Key的指针。 | 
589| value | 需要设置的整型值。 | 
590
591**返回:**
592
593返回执行的错误码。
594
595若错误码为PREFERENCES_OK,表示操作成功。
596
597若错误码为PREFERENCES_ERROR_INVALID_PARAM,表示参数不合法。
598
599若错误码为PREFERENCES_ERROR_STORAGE,表示存储异常。
600
601若错误码为PREFERENCES_ERROR_MALLOC,表示内存分配失败。
602
603**参见:**
604
605[OH_Preferences](#oh_preferences)
606
607[OH_Preferences_ErrCode](#oh_preferences_errcode)
608
609
610### OH_Preferences_SetString()
611
612```
613int OH_Preferences_SetString (OH_Preferences *preference, const char *key, const char *value )
614```
615
616**描述**
617
618根据Key设置Preferences实例对象中的字符串。
619
620**起始版本:** 13
621
622**参数:**
623
624| 名称 | 描述 | 
625| -------- | -------- |
626| preference | 指向目标[OH_Preferences](#oh_preferences)实例对象的指针。 | 
627| key | 指向需要设置的Key的指针。 | 
628| value | 指向需要设置的字符串指针。 | 
629
630**返回:**
631
632返回执行的错误码。
633
634若错误码为PREFERENCES_OK,表示操作成功。
635
636若错误码为PREFERENCES_ERROR_INVALID_PARAM,表示参数不合法。
637
638若错误码为PREFERENCES_ERROR_STORAGE,表示存储异常。
639
640若错误码为PREFERENCES_ERROR_MALLOC,表示内存分配失败。
641
642**参见:**
643
644[OH_Preferences](#oh_preferences)
645
646[OH_Preferences_ErrCode](#oh_preferences_errcode)
647
648
649### OH_Preferences_UnregisterDataObserver()
650
651```
652int OH_Preferences_UnregisterDataObserver (OH_Preferences *preference, void *context, OH_PreferencesDataObserver observer, const char *keys[], uint32_t keyCount )
653```
654
655**描述**
656
657取消注册选取Key的数据变更订阅。
658
659**起始版本:** 13
660
661**参数:**
662
663| 名称 | 描述 | 
664| -------- | -------- |
665| preference | 指向目标[OH_Preferences](#oh_preferences)实例对象的指针。 | 
666| context | 应用上下文的指针。 | 
667| observer | 订阅数据变更关联的回调函数[OH_PreferencesDataObserver](#oh_preferencesdataobserver)。 | 
668| keys | 需要取消订阅的Key数组。 | 
669| keyCount | 需要取消订阅的Key的数量。 | 
670
671**返回:**
672
673返回执行的错误码。
674
675若错误码为PREFERENCES_OK,表示操作成功。
676
677若错误码为PREFERENCES_ERROR_INVALID_PARAM,表示参数不合法。
678
679若错误码为PREFERENCES_ERROR_STORAGE,表示存储异常。
680
681若错误码为PREFERENCES_ERROR_MALLOC,表示内存分配失败。
682
683**参见:**
684
685[OH_Preferences](#oh_preferences)
686
687[OH_PreferencesDataObserver](#oh_preferencesdataobserver)
688
689[OH_Preferences_ErrCode](#oh_preferences_errcode)
690
691
692### OH_PreferencesOption_Create()
693
694```
695OH_PreferencesOption* OH_PreferencesOption_Create (void )
696```
697
698**描述**
699
700创建一个Preferences配置选项的[OH_PreferencesOption](#oh_preferencesoption)实例对象以及指向它的指针。 当不再需要使用指针时,请使用[OH_PreferencesOption_Destroy](#oh_preferencesoption_destroy)销毁实例对象,否则会导致内存泄漏。
701
702**起始版本:** 13
703
704**返回:**
705
706如果操作成功,返回指向Preferences配置选项[OH_PreferencesOption](#oh_preferencesoption)实例对象的指针。失败返回空指针。
707
708**参见:**
709
710[OH_PreferencesOption](#oh_preferencesoption)
711
712
713### OH_PreferencesOption_Destroy()
714
715```
716int OH_PreferencesOption_Destroy (OH_PreferencesOption *option)
717```
718
719**描述**
720
721销毁Preferences配置选项[OH_PreferencesOption](#oh_preferencesoption)实例。
722
723**起始版本:** 13
724
725**参数:**
726
727| 名称 | 描述 | 
728| -------- | -------- |
729| option | Preferences配置选项[OH_PreferencesOption](#oh_preferencesoption)实例对象的指针。 | 
730
731**返回:**
732
733返回执行的错误码。 若错误码为PREFERENCES_OK,表示操作成功。 若错误码为PREFERENCES_ERROR_INVALID_PARAM,表示参数不合法。
734
735**参见:**
736
737[OH_PreferencesOption](#oh_preferencesoption)
738
739[OH_Preferences_ErrCode](#oh_preferences_errcode)
740
741
742### OH_PreferencesOption_SetBundleName()
743
744```
745int OH_PreferencesOption_SetBundleName (OH_PreferencesOption *option, const char *bundleName )
746```
747
748**描述**
749
750设置Preferences配置选项[OH_PreferencesOption](#oh_preferencesoption)实例对象的包名称。
751
752**起始版本:** 13
753
754**参数:**
755
756| 名称 | 描述 | 
757| -------- | -------- |
758| option | Preferences配置选项[OH_PreferencesOption](#oh_preferencesoption)实例对象的指针。 | 
759| bundleName | 需要设置的包名称。 | 
760
761**返回:**
762
763返回执行的错误码。
764
765若错误码为PREFERENCES_OK,表示操作成功。
766
767若错误码为PREFERENCES_ERROR_INVALID_PARAM,表示参数不合法。
768
769**参见:**
770
771[OH_PreferencesOption](#oh_preferencesoption)
772
773[OH_Preferences_ErrCode](#oh_preferences_errcode)
774
775
776### OH_PreferencesOption_SetDataGroupId()
777
778```
779int OH_PreferencesOption_SetDataGroupId (OH_PreferencesOption *option, const char *dataGroupId )
780```
781
782**描述**
783
784设置Preferences配置选项[OH_PreferencesOption](#oh_preferencesoption)实例对象的应用组ID。
785
786设置应用组ID后,会指定在此应用组ID对应的沙箱路径下创建Preferences实例。
787
788应用组ID需要向应用市场获取,暂不支持。
789
790当传入的应用组ID为空字符串时,默认在本应用沙箱目录下创建Preferences实例。
791
792**起始版本:** 13
793
794**参数:**
795
796| 名称 | 描述 | 
797| -------- | -------- |
798| option | Preferences配置选项[OH_PreferencesOption](#oh_preferencesoption)实例对象的指针。 | 
799| dataGroupId | 需要设置的应用组ID。 | 
800
801**返回:**
802
803返回执行的错误码。
804
805若错误码为PREFERENCES_OK,表示操作成功。
806
807若错误码为PREFERENCES_ERROR_INVALID_PARAM,表示参数不合法。
808
809**参见:**
810
811[OH_PreferencesOption](#oh_preferencesoption)
812
813[OH_Preferences_ErrCode](#oh_preferences_errcode)
814
815
816### OH_PreferencesOption_SetFileName()
817
818```
819int OH_PreferencesOption_SetFileName (OH_PreferencesOption *option, const char *fileName )
820```
821
822**描述**
823
824设置Preferences配置选项[OH_PreferencesOption](#oh_preferencesoption)实例对象的文件名称。
825
826**起始版本:** 13
827
828**参数:**
829
830| 名称 | 描述 | 
831| -------- | -------- |
832| option | 指向Preferences配置选项[OH_PreferencesOption](#oh_preferencesoption)实例对象的指针。 | 
833| fileName | 需要设置的文件名称。 | 
834
835**返回:**
836
837返回执行的错误码。
838
839若错误码为PREFERENCES_OK,表示操作成功。
840
841若错误码为PREFERENCES_ERROR_INVALID_PARAM,表示参数不合法。
842
843**参见:**
844
845[OH_PreferencesOption](#oh_preferencesoption)
846
847[OH_Preferences_ErrCode](#oh_preferences_errcode)
848
849
850### OH_PreferencesPair_GetKey()
851
852```
853const char* OH_PreferencesPair_GetKey (const OH_PreferencesPair *pairs, uint32_t index )
854```
855
856**描述**
857
858获取KV数据中索引对应数据的键。
859
860**起始版本:** 13
861
862**参数:**
863
864| 名称 | 描述 | 
865| -------- | -------- |
866| pairs | 目标KV数据[OH_PreferencesPair](#oh_preferencespair)的指针。 | 
867| index | 目标KV数据[OH_PreferencesPair](#oh_preferencespair)的索引值。 | 
868
869**返回:**
870
871如果操作成功,返回获取到的键的指针。操作失败或传参不合法返回空指针。
872
873**参见:**
874
875[OH_PreferencesPair](#oh_preferencespair)
876
877
878### OH_PreferencesPair_GetPreferencesValue()
879
880```
881const OH_PreferencesValue* OH_PreferencesPair_GetPreferencesValue (const OH_PreferencesPair *pairs, uint32_t index )
882```
883
884**描述**
885
886获取KV数据数组中索引对应的值。
887
888**起始版本:** 13
889
890**参数:**
891
892| 名称 | 描述 | 
893| -------- | -------- |
894| pairs | 目标KV数据[OH_PreferencesPair](#oh_preferencespair)的指针。 | 
895| index | 目标KV数据[OH_PreferencesPair](#oh_preferencespair)的索引值。 | 
896
897**返回:**
898
899如果操作成功,返回获取到的值对象的指针。操作失败或传参不合法返回空指针。
900
901**参见:**
902
903[OH_PreferencesValue](#oh_preferencesvalue)
904
905
906### OH_PreferencesValue_GetBool()
907
908```
909int OH_PreferencesValue_GetBool (const OH_PreferencesValue *object, bool *value )
910```
911
912**描述**
913
914从PreferencesValue对象[OH_PreferencesValue](#oh_preferencesvalue)中获取一个布尔值。
915
916**起始版本:** 13
917
918**参数:**
919
920| 名称 | 描述 | 
921| -------- | -------- |
922| object | PreferencesValue对象[OH_PreferencesValue](#oh_preferencesvalue)的指针。 | 
923| value | 该参数作为出参使用,表示指向获取到的布尔值的指针。 | 
924
925**返回:**
926
927返回执行的错误码。
928
929若错误码为PREFERENCES_OK,表示操作成功。
930
931若错误码为PREFERENCES_ERROR_INVALID_PARAM,表示参数不合法。
932
933若错误码为PREFERENCES_ERROR_STORAGE,表示存储异常。
934
935若错误码为PREFERENCES_ERROR_MALLOC,表示内存分配失败。
936
937**参见:**
938
939[OH_PreferencesValue](#oh_preferencesvalue)
940
941[OH_Preferences_ErrCode](#oh_preferences_errcode)
942
943
944### OH_PreferencesValue_GetInt()
945
946```
947int OH_PreferencesValue_GetInt (const OH_PreferencesValue* object, int* value )
948```
949
950**描述**
951
952从PreferencesValue对象[OH_PreferencesValue](#oh_preferencesvalue)中获取一个整型值。
953
954**起始版本:** 13
955
956**参数:**
957
958| 名称 | 描述 | 
959| -------- | -------- |
960| object | PreferencesValue对象[OH_PreferencesValue](#oh_preferencesvalue)的指针。 | 
961| value | 该参数作为出参使用,表示指向获取到的整型值的指针。 | 
962
963**返回:**
964
965返回执行的错误码。
966
967若错误码为PREFERENCES_OK,表示操作成功。
968
969若错误码为PREFERENCES_ERROR_INVALID_PARAM,表示参数不合法。
970
971若错误码为PREFERENCES_ERROR_STORAGE,表示存储异常。
972
973若错误码为PREFERENCES_ERROR_MALLOC,表示内存分配失败。
974
975**参见:**
976
977[OH_PreferencesValue](#oh_preferencesvalue)
978
979[OH_Preferences_ErrCode](#oh_preferences_errcode)
980
981
982### OH_PreferencesValue_GetString()
983
984```
985int OH_PreferencesValue_GetString (const OH_PreferencesValue *object, char **value, uint32_t *valueLen )
986```
987
988**描述**
989
990从PreferencesValue对象[OH_PreferencesValue](#oh_preferencesvalue)中获取字符串。
991
992**起始版本:** 13
993
994**参数:**
995
996| 名称 | 描述 | 
997| -------- | -------- |
998| object | PreferencesValue对象[OH_PreferencesValue](#oh_preferencesvalue)的指针。 | 
999| value | 该参数作为出参使用,表示指向获取到的字符串的二级指针,使用完毕后需要调用释放函数[OH_Preferences_FreeString](#oh_preferences_freestring)释放内存。 | 
1000| valueLen | 该参数作为出参使用,表示指向获取到的字符串长度的指针。 | 
1001
1002**返回:**
1003
1004返回执行的错误码。
1005
1006若错误码为PREFERENCES_OK,表示操作成功。
1007
1008若错误码为PREFERENCES_ERROR_INVALID_PARAM,表示参数不合法。
1009
1010若错误码为PREFERENCES_ERROR_STORAGE,表示存储异常。
1011
1012若错误码为PREFERENCES_ERROR_MALLOC,表示内存分配失败。
1013
1014**参见:**
1015
1016[OH_PreferencesValue](#oh_preferencesvalue)
1017
1018[OH_Preferences_ErrCode](#oh_preferences_errcode)
1019
1020
1021### OH_PreferencesValue_GetValueType()
1022
1023```
1024Preference_ValueType OH_PreferencesValue_GetValueType (const OH_PreferencesValue *object)
1025```
1026
1027**描述**
1028
1029获取PreferencesValue对象的数据类型。
1030
1031**起始版本:** 13
1032
1033**参数:**
1034
1035| 名称 | 描述 | 
1036| -------- | -------- |
1037| object | PreferencesValue对象[OH_PreferencesValue](#oh_preferencesvalue)的指针。 | 
1038
1039**返回:**
1040
1041返回获取到的数据类型枚举。若返回数据类型枚举为PREFERENCE_TYPE_NULL,代表传参不合法。
1042
1043**参见:**
1044
1045[OH_PreferencesValue](#oh_preferencesvalue)
1046