1e41f4b71Sopenharmony_ci# @ohos.configPolicy (Configuration Policy) (System API) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ciThe **configPolicy** module provides APIs for obtaining the custom configuration directory and file path based on the predefined configuration level. 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci> **NOTE** 6e41f4b71Sopenharmony_ci> 7e41f4b71Sopenharmony_ci> The initial APIs of this module are supported since API version 8. Newly added APIs will be marked with a superscript to indicate their earliest API version. 8e41f4b71Sopenharmony_ci> 9e41f4b71Sopenharmony_ci> The APIs provided by this module are system APIs. 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci## Modules to Import 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci```ts 14e41f4b71Sopenharmony_ciimport configPolicy from '@ohos.configPolicy'; 15e41f4b71Sopenharmony_ci``` 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ci## getOneCfgFile 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_cigetOneCfgFile(relPath: string, callback: AsyncCallback<string>) 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ciObtains the path of the configuration file with the highest priority based on the specified file name. This API uses an asynchronous callback to return the result. 22e41f4b71Sopenharmony_ciIf there are two **config.xml** files, **/system/etc/config.xml** and **/sys_pod/etc/config.xml**, in ascending order of priority, **/sys_pod/etc/config.xml** is returned. 23e41f4b71Sopenharmony_ci 24e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Customization.ConfigPolicy 25e41f4b71Sopenharmony_ci 26e41f4b71Sopenharmony_ci**Parameters** 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 29e41f4b71Sopenharmony_ci| -------- | --------------------------- | ---- | ------------------------------------------ | 30e41f4b71Sopenharmony_ci| relPath | string | Yes | Name of the configuration file. | 31e41f4b71Sopenharmony_ci| callback | AsyncCallback<string> | Yes | Callback used to return the path of the configuration file.| 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ci**Error codes** 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ci| ID| Error Message | 38e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 39e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ci**Example** 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci ```ts 44e41f4b71Sopenharmony_ci import { BusinessError } from '@ohos.base'; 45e41f4b71Sopenharmony_ci 46e41f4b71Sopenharmony_ci try { 47e41f4b71Sopenharmony_ci let relpath: string = 'etc/config.xml'; 48e41f4b71Sopenharmony_ci configPolicy.getOneCfgFile(relpath, (error: BusinessError, value: string) => { 49e41f4b71Sopenharmony_ci if (error == null) { 50e41f4b71Sopenharmony_ci console.log('value is ' + value); 51e41f4b71Sopenharmony_ci } else { 52e41f4b71Sopenharmony_ci console.log('error occurs ' + error); 53e41f4b71Sopenharmony_ci } 54e41f4b71Sopenharmony_ci }); 55e41f4b71Sopenharmony_ci } catch (error) { 56e41f4b71Sopenharmony_ci let code = (error as BusinessError).code; 57e41f4b71Sopenharmony_ci let message = (error as BusinessError).message; 58e41f4b71Sopenharmony_ci console.log('error:' + code + ',' + message); 59e41f4b71Sopenharmony_ci } 60e41f4b71Sopenharmony_ci ``` 61e41f4b71Sopenharmony_ci 62e41f4b71Sopenharmony_ci## getOneCfgFile 63e41f4b71Sopenharmony_ci 64e41f4b71Sopenharmony_cigetOneCfgFile(relPath: string): Promise<string> 65e41f4b71Sopenharmony_ci 66e41f4b71Sopenharmony_ciObtains the path of the configuration file with the highest priority based on the specified file name. This API uses a promise to return the result. 67e41f4b71Sopenharmony_ci 68e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Customization.ConfigPolicy 69e41f4b71Sopenharmony_ci 70e41f4b71Sopenharmony_ci**Parameters** 71e41f4b71Sopenharmony_ci 72e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 73e41f4b71Sopenharmony_ci| ------- | ------ | ---- | ---------- | 74e41f4b71Sopenharmony_ci| relPath | string | Yes | Name of the configuration file.| 75e41f4b71Sopenharmony_ci 76e41f4b71Sopenharmony_ci**Error codes** 77e41f4b71Sopenharmony_ci 78e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 79e41f4b71Sopenharmony_ci 80e41f4b71Sopenharmony_ci| ID| Error Message | 81e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 82e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 83e41f4b71Sopenharmony_ci 84e41f4b71Sopenharmony_ci**Return value** 85e41f4b71Sopenharmony_ci 86e41f4b71Sopenharmony_ci| Type | Description | 87e41f4b71Sopenharmony_ci| ---------------------- | ------------------------ | 88e41f4b71Sopenharmony_ci| Promise<string> | Promise used to return the path of the configuration file.| 89e41f4b71Sopenharmony_ci 90e41f4b71Sopenharmony_ci**Example** 91e41f4b71Sopenharmony_ci 92e41f4b71Sopenharmony_ci ```ts 93e41f4b71Sopenharmony_ci import { BusinessError } from '@ohos.base'; 94e41f4b71Sopenharmony_ci 95e41f4b71Sopenharmony_ci try { 96e41f4b71Sopenharmony_ci let relpath: string = 'etc/config.xml'; 97e41f4b71Sopenharmony_ci configPolicy.getOneCfgFile(relpath).then((value: string) => { 98e41f4b71Sopenharmony_ci console.log('value is ' + value); 99e41f4b71Sopenharmony_ci }).catch((error: BusinessError) => { 100e41f4b71Sopenharmony_ci console.log('getOneCfgFile promise ' + error); 101e41f4b71Sopenharmony_ci }); 102e41f4b71Sopenharmony_ci } catch (error) { 103e41f4b71Sopenharmony_ci let code = (error as BusinessError).code; 104e41f4b71Sopenharmony_ci let message = (error as BusinessError).message; 105e41f4b71Sopenharmony_ci console.log('error:' + code + ',' + message); 106e41f4b71Sopenharmony_ci } 107e41f4b71Sopenharmony_ci ``` 108e41f4b71Sopenharmony_ci 109e41f4b71Sopenharmony_ci## getCfgFiles 110e41f4b71Sopenharmony_ci 111e41f4b71Sopenharmony_cigetCfgFiles(relPath: string, callback: AsyncCallback<Array<string>>) 112e41f4b71Sopenharmony_ci 113e41f4b71Sopenharmony_ciObtains a list of configuration files with the specified name, sorted in ascending order of priority. This API uses an asynchronous callback to return the result. 114e41f4b71Sopenharmony_ciIf there are two **config.xml** files, **/system/etc/config.xml** and **/sys_pod/etc/config.xml**, in ascending order of priority, **/system/etc/config.xml, /sys_pod/etc/config.xml** is returned. 115e41f4b71Sopenharmony_ci 116e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Customization.ConfigPolicy 117e41f4b71Sopenharmony_ci 118e41f4b71Sopenharmony_ci**Parameters** 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 121e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | ---- | -------------------------- | 122e41f4b71Sopenharmony_ci| relPath | string | Yes | Name of the configuration file. | 123e41f4b71Sopenharmony_ci| callback | AsyncCallback<Array<string>> | Yes | Callback used to return the file list.| 124e41f4b71Sopenharmony_ci 125e41f4b71Sopenharmony_ci**Error codes** 126e41f4b71Sopenharmony_ci 127e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 128e41f4b71Sopenharmony_ci 129e41f4b71Sopenharmony_ci| ID| Error Message | 130e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 131e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 132e41f4b71Sopenharmony_ci 133e41f4b71Sopenharmony_ci**Example** 134e41f4b71Sopenharmony_ci 135e41f4b71Sopenharmony_ci ```ts 136e41f4b71Sopenharmony_ci import { BusinessError } from '@ohos.base'; 137e41f4b71Sopenharmony_ci 138e41f4b71Sopenharmony_ci try { 139e41f4b71Sopenharmony_ci configPolicy.getCfgFiles('etc/config.xml', (error: BusinessError, value: Array<string>) => { 140e41f4b71Sopenharmony_ci if (error == null) { 141e41f4b71Sopenharmony_ci console.log('value is ' + value); 142e41f4b71Sopenharmony_ci } else { 143e41f4b71Sopenharmony_ci console.log('error occurs ' + error); 144e41f4b71Sopenharmony_ci } 145e41f4b71Sopenharmony_ci }); 146e41f4b71Sopenharmony_ci } catch (error) { 147e41f4b71Sopenharmony_ci let code = (error as BusinessError).code; 148e41f4b71Sopenharmony_ci let message = (error as BusinessError).message; 149e41f4b71Sopenharmony_ci console.log('error:' + code + ',' + message); 150e41f4b71Sopenharmony_ci } 151e41f4b71Sopenharmony_ci ``` 152e41f4b71Sopenharmony_ci 153e41f4b71Sopenharmony_ci## getCfgFiles 154e41f4b71Sopenharmony_ci 155e41f4b71Sopenharmony_cigetCfgFiles(relPath: string): Promise<Array<string>> 156e41f4b71Sopenharmony_ci 157e41f4b71Sopenharmony_ciObtains a list of configuration files with the specified name, sorted in ascending order of priority. This API uses a promise to return the result. 158e41f4b71Sopenharmony_ci 159e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Customization.ConfigPolicy 160e41f4b71Sopenharmony_ci 161e41f4b71Sopenharmony_ci**Parameters** 162e41f4b71Sopenharmony_ci 163e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 164e41f4b71Sopenharmony_ci| ------- | ------ | ---- | ---------- | 165e41f4b71Sopenharmony_ci| relPath | string | Yes | Name of the configuration file.| 166e41f4b71Sopenharmony_ci 167e41f4b71Sopenharmony_ci**Error codes** 168e41f4b71Sopenharmony_ci 169e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 170e41f4b71Sopenharmony_ci 171e41f4b71Sopenharmony_ci| ID| Error Message | 172e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 173e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 174e41f4b71Sopenharmony_ci 175e41f4b71Sopenharmony_ci**Return value** 176e41f4b71Sopenharmony_ci 177e41f4b71Sopenharmony_ci| Type | Description | 178e41f4b71Sopenharmony_ci| ---------------------------------- | -------- | 179e41f4b71Sopenharmony_ci| Promise<Array<string>> | Promise used to return the file list.| 180e41f4b71Sopenharmony_ci 181e41f4b71Sopenharmony_ci**Example** 182e41f4b71Sopenharmony_ci 183e41f4b71Sopenharmony_ci ```ts 184e41f4b71Sopenharmony_ci import { BusinessError } from '@ohos.base'; 185e41f4b71Sopenharmony_ci 186e41f4b71Sopenharmony_ci try { 187e41f4b71Sopenharmony_ci let relpath: string = 'etc/config.xml'; 188e41f4b71Sopenharmony_ci configPolicy.getCfgFiles(relpath).then((value: Array<string>) => { 189e41f4b71Sopenharmony_ci console.log('value is ' + value); 190e41f4b71Sopenharmony_ci }).catch((error: BusinessError) => { 191e41f4b71Sopenharmony_ci console.log('getCfgFiles promise ' + error); 192e41f4b71Sopenharmony_ci }); 193e41f4b71Sopenharmony_ci } catch (error) { 194e41f4b71Sopenharmony_ci let code = (error as BusinessError).code; 195e41f4b71Sopenharmony_ci let message = (error as BusinessError).message; 196e41f4b71Sopenharmony_ci console.log('error:' + code + ',' + message); 197e41f4b71Sopenharmony_ci } 198e41f4b71Sopenharmony_ci ``` 199e41f4b71Sopenharmony_ci 200e41f4b71Sopenharmony_ci## getCfgDirList 201e41f4b71Sopenharmony_ci 202e41f4b71Sopenharmony_cigetCfgDirList(callback: AsyncCallback<Array<string>>) 203e41f4b71Sopenharmony_ci 204e41f4b71Sopenharmony_ciObtains the list of configuration level directories. This API uses an asynchronous callback to return the result. 205e41f4b71Sopenharmony_ci 206e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Customization.ConfigPolicy 207e41f4b71Sopenharmony_ci 208e41f4b71Sopenharmony_ci**Parameters** 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 211e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | ---- | ---------------------------------- | 212e41f4b71Sopenharmony_ci| callback | AsyncCallback<Array<string>> | Yes | Callback used to return the configuration level directory list.| 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ci**Error codes** 215e41f4b71Sopenharmony_ci 216e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 217e41f4b71Sopenharmony_ci 218e41f4b71Sopenharmony_ci| ID| Error Message | 219e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 220e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 221e41f4b71Sopenharmony_ci 222e41f4b71Sopenharmony_ci**Example** 223e41f4b71Sopenharmony_ci 224e41f4b71Sopenharmony_ci ```ts 225e41f4b71Sopenharmony_ci import { BusinessError } from '@ohos.base'; 226e41f4b71Sopenharmony_ci 227e41f4b71Sopenharmony_ci try { 228e41f4b71Sopenharmony_ci configPolicy.getCfgDirList((error: BusinessError, value: Array<string>) => { 229e41f4b71Sopenharmony_ci if (error == null) { 230e41f4b71Sopenharmony_ci console.log('value is ' + value); 231e41f4b71Sopenharmony_ci } else { 232e41f4b71Sopenharmony_ci console.log('error occurs ' + error); 233e41f4b71Sopenharmony_ci } 234e41f4b71Sopenharmony_ci }); 235e41f4b71Sopenharmony_ci } catch (error) { 236e41f4b71Sopenharmony_ci let code = (error as BusinessError).code; 237e41f4b71Sopenharmony_ci let message = (error as BusinessError).message; 238e41f4b71Sopenharmony_ci console.log('error:' + code + ',' + message); 239e41f4b71Sopenharmony_ci } 240e41f4b71Sopenharmony_ci ``` 241e41f4b71Sopenharmony_ci 242e41f4b71Sopenharmony_ci## getCfgDirList 243e41f4b71Sopenharmony_ci 244e41f4b71Sopenharmony_cigetCfgDirList(): Promise<Array<string>> 245e41f4b71Sopenharmony_ci 246e41f4b71Sopenharmony_ciObtains the list of configuration level directories. This API uses a promise to return the result. 247e41f4b71Sopenharmony_ci 248e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Customization.ConfigPolicy 249e41f4b71Sopenharmony_ci 250e41f4b71Sopenharmony_ci**Return value** 251e41f4b71Sopenharmony_ci 252e41f4b71Sopenharmony_ci| Type | Description | 253e41f4b71Sopenharmony_ci| ---------------------------------- | ---------------- | 254e41f4b71Sopenharmony_ci| Promise<Array<string>> | Promise used to return the configuration level directory list.| 255e41f4b71Sopenharmony_ci 256e41f4b71Sopenharmony_ci**Example** 257e41f4b71Sopenharmony_ci 258e41f4b71Sopenharmony_ci ```ts 259e41f4b71Sopenharmony_ci import { BusinessError } from '@ohos.base'; 260e41f4b71Sopenharmony_ci 261e41f4b71Sopenharmony_ci try { 262e41f4b71Sopenharmony_ci configPolicy.getCfgDirList().then((value: Array<string>) => { 263e41f4b71Sopenharmony_ci console.log('value is ' + value); 264e41f4b71Sopenharmony_ci }).catch((error: BusinessError) => { 265e41f4b71Sopenharmony_ci console.log('getCfgDirList promise ' + error); 266e41f4b71Sopenharmony_ci }); 267e41f4b71Sopenharmony_ci } catch (error) { 268e41f4b71Sopenharmony_ci let code = (error as BusinessError).code; 269e41f4b71Sopenharmony_ci let message = (error as BusinessError).message; 270e41f4b71Sopenharmony_ci console.log('error:' + code + ',' + message); 271e41f4b71Sopenharmony_ci } 272e41f4b71Sopenharmony_ci ``` 273e41f4b71Sopenharmony_ci 274e41f4b71Sopenharmony_ci## getOneCfgFile<sup>11+</sup> 275e41f4b71Sopenharmony_ci 276e41f4b71Sopenharmony_cigetOneCfgFile(relPath: string, followMode: FollowXMode, callback: AsyncCallback<string>) 277e41f4b71Sopenharmony_ci 278e41f4b71Sopenharmony_ciObtains the path of the configuration file with the highest priority based on the specified file name and follow mode. This API uses an asynchronous callback to return the result. 279e41f4b71Sopenharmony_ciFor example, there are three **config.xml** files (in ascending order of priority): **/system/etc/config.xml**, **/sys_pod/etc/config.xml**, and **/sys_pod/etc/carrier/46060/etc/config.xml**. If the opkey of the default card is **46060** and the follow mode is **SIM_DEFAULT**, **/sys_pod/etc/carrier/46060/etc/config.xml** is returned. 280e41f4b71Sopenharmony_ci 281e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Customization.ConfigPolicy 282e41f4b71Sopenharmony_ci 283e41f4b71Sopenharmony_ci**Parameters** 284e41f4b71Sopenharmony_ci 285e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 286e41f4b71Sopenharmony_ci| ---------- | ----------------------------- | ---- | ------------------------------------------ | 287e41f4b71Sopenharmony_ci| relPath | string | Yes | Name of the configuration file. | 288e41f4b71Sopenharmony_ci| followMode | [FollowXMode](#followxmode11) | Yes | Follow mode. | 289e41f4b71Sopenharmony_ci| callback | AsyncCallback<string> | Yes | Callback used to return the path of the configuration file.| 290e41f4b71Sopenharmony_ci 291e41f4b71Sopenharmony_ci**Error codes** 292e41f4b71Sopenharmony_ci 293e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 294e41f4b71Sopenharmony_ci 295e41f4b71Sopenharmony_ci| ID| Error Message | 296e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 297e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 298e41f4b71Sopenharmony_ci 299e41f4b71Sopenharmony_ci**Example** 300e41f4b71Sopenharmony_ci 301e41f4b71Sopenharmony_ci ```ts 302e41f4b71Sopenharmony_ci import { BusinessError } from '@ohos.base'; 303e41f4b71Sopenharmony_ci 304e41f4b71Sopenharmony_ci try { 305e41f4b71Sopenharmony_ci let relpath: string = 'etc/config.xml'; 306e41f4b71Sopenharmony_ci configPolicy.getOneCfgFile(relpath, configPolicy.FollowXMode.SIM_DEFAULT, 307e41f4b71Sopenharmony_ci (error: BusinessError, value: string) => { 308e41f4b71Sopenharmony_ci if (error == null) { 309e41f4b71Sopenharmony_ci console.log('value is ' + value); 310e41f4b71Sopenharmony_ci } else { 311e41f4b71Sopenharmony_ci console.log('error occurs ' + error); 312e41f4b71Sopenharmony_ci } 313e41f4b71Sopenharmony_ci }); 314e41f4b71Sopenharmony_ci } catch (error) { 315e41f4b71Sopenharmony_ci let code = (error as BusinessError).code; 316e41f4b71Sopenharmony_ci let message = (error as BusinessError).message; 317e41f4b71Sopenharmony_ci console.log('error:' + code + ',' + message); 318e41f4b71Sopenharmony_ci } 319e41f4b71Sopenharmony_ci ``` 320e41f4b71Sopenharmony_ci 321e41f4b71Sopenharmony_ci## getOneCfgFile<sup>11+</sup> 322e41f4b71Sopenharmony_ci 323e41f4b71Sopenharmony_cigetOneCfgFile(relPath: string, followMode: FollowXMode, extra: string, callback: AsyncCallback<string>) 324e41f4b71Sopenharmony_ci 325e41f4b71Sopenharmony_ciObtains the path of the configuration file with the highest priority based on the specified file name and custom follow rule. This API uses an asynchronous callback to return the result. 326e41f4b71Sopenharmony_ciFor example, there are three **config.xml** files (in ascending order of priority): **/system/etc/config.xml**, **/sys_pod/etc/config.xml**, and **/sys_pod/etc/carrier/46060/etc/config.xml**. If the opkey of card 1 is **46060**, the follow mode is **USER_DEFINED**, and the custom follow rule is **etc/carrier/${telephony.sim.opkey0}**, **/sys_pod/etc/carrier/46060/etc/config.xml** is returned. 327e41f4b71Sopenharmony_ci 328e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Customization.ConfigPolicy 329e41f4b71Sopenharmony_ci 330e41f4b71Sopenharmony_ci**Parameters** 331e41f4b71Sopenharmony_ci 332e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 333e41f4b71Sopenharmony_ci| ---------- | ----------------------------- | ---- | ------------------------------------------------------ | 334e41f4b71Sopenharmony_ci| relPath | string | Yes | Name of the configuration file. | 335e41f4b71Sopenharmony_ci| followMode | [FollowXMode](#followxmode11) | Yes | Follow mode. | 336e41f4b71Sopenharmony_ci| extra | string | Yes | Custom follow rule. This parameter is valid only when **followMode** is set to **USER_DEFINED**.| 337e41f4b71Sopenharmony_ci| callback | AsyncCallback<string> | Yes | Callback used to return the path of the configuration file. | 338e41f4b71Sopenharmony_ci 339e41f4b71Sopenharmony_ci**Error codes** 340e41f4b71Sopenharmony_ci 341e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 342e41f4b71Sopenharmony_ci 343e41f4b71Sopenharmony_ci| ID| Error Message | 344e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 345e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 346e41f4b71Sopenharmony_ci 347e41f4b71Sopenharmony_ci**Example** 348e41f4b71Sopenharmony_ci 349e41f4b71Sopenharmony_ci ```ts 350e41f4b71Sopenharmony_ci import { BusinessError } from '@ohos.base'; 351e41f4b71Sopenharmony_ci 352e41f4b71Sopenharmony_ci try { 353e41f4b71Sopenharmony_ci let relpath: string = 'etc/config.xml'; 354e41f4b71Sopenharmony_ci let extra: string = 'etc/carrier/${telephony.sim.opkey0}'; 355e41f4b71Sopenharmony_ci configPolicy.getOneCfgFile(relpath, configPolicy.FollowXMode.USER_DEFINED, extra, 356e41f4b71Sopenharmony_ci (error: BusinessError, value: string) => { 357e41f4b71Sopenharmony_ci if (error == null) { 358e41f4b71Sopenharmony_ci console.log('value is ' + value); 359e41f4b71Sopenharmony_ci } else { 360e41f4b71Sopenharmony_ci console.log('error occurs ' + error); 361e41f4b71Sopenharmony_ci } 362e41f4b71Sopenharmony_ci }); 363e41f4b71Sopenharmony_ci } catch (error) { 364e41f4b71Sopenharmony_ci let code = (error as BusinessError).code; 365e41f4b71Sopenharmony_ci let message = (error as BusinessError).message; 366e41f4b71Sopenharmony_ci console.log('error:' + code + ',' + message); 367e41f4b71Sopenharmony_ci } 368e41f4b71Sopenharmony_ci ``` 369e41f4b71Sopenharmony_ci 370e41f4b71Sopenharmony_ci## getOneCfgFile<sup>11+</sup> 371e41f4b71Sopenharmony_ci 372e41f4b71Sopenharmony_cigetOneCfgFile(relPath: string, followMode: FollowXMode, extra?: string): Promise<string> 373e41f4b71Sopenharmony_ci 374e41f4b71Sopenharmony_ciObtains the path of the configuration file with the highest priority based on the specified file name and follow mode. This API uses a promise to return the result. 375e41f4b71Sopenharmony_ci 376e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Customization.ConfigPolicy 377e41f4b71Sopenharmony_ci 378e41f4b71Sopenharmony_ci**Parameters** 379e41f4b71Sopenharmony_ci 380e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 381e41f4b71Sopenharmony_ci| ---------- | ----------------------------- | ---- | ------------------------------------------------------ | 382e41f4b71Sopenharmony_ci| relPath | string | Yes | Name of the configuration file. | 383e41f4b71Sopenharmony_ci| followMode | [FollowXMode](#followxmode11) | Yes | Follow mode. | 384e41f4b71Sopenharmony_ci| extra | string | No | Custom follow rule. This parameter is valid only when **followMode** is set to **USER_DEFINED**.| 385e41f4b71Sopenharmony_ci 386e41f4b71Sopenharmony_ci**Error codes** 387e41f4b71Sopenharmony_ci 388e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 389e41f4b71Sopenharmony_ci 390e41f4b71Sopenharmony_ci| ID| Error Message | 391e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 392e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3.Parameter verification failed.| 393e41f4b71Sopenharmony_ci 394e41f4b71Sopenharmony_ci**Return value** 395e41f4b71Sopenharmony_ci 396e41f4b71Sopenharmony_ci| Type | Description | 397e41f4b71Sopenharmony_ci| ---------------------- | ------------------------ | 398e41f4b71Sopenharmony_ci| Promise<string> | Promise used to return the path of the configuration file.| 399e41f4b71Sopenharmony_ci 400e41f4b71Sopenharmony_ci**Example** 401e41f4b71Sopenharmony_ci 402e41f4b71Sopenharmony_ci ```ts 403e41f4b71Sopenharmony_ci import { BusinessError } from '@ohos.base'; 404e41f4b71Sopenharmony_ci 405e41f4b71Sopenharmony_ci try { 406e41f4b71Sopenharmony_ci let relpath: string = 'etc/config.xml'; 407e41f4b71Sopenharmony_ci let extra: string = 'etc/carrier/${telephony.sim.opkey0}'; 408e41f4b71Sopenharmony_ci configPolicy.getOneCfgFile(relpath, configPolicy.FollowXMode.SIM_DEFAULT, extra).then((value: string) => { 409e41f4b71Sopenharmony_ci console.log('value is ' + value); 410e41f4b71Sopenharmony_ci }).catch((error: BusinessError) => { 411e41f4b71Sopenharmony_ci console.log('getOneCfgFile promise ' + error); 412e41f4b71Sopenharmony_ci }); 413e41f4b71Sopenharmony_ci } catch (error) { 414e41f4b71Sopenharmony_ci let code = (error as BusinessError).code; 415e41f4b71Sopenharmony_ci let message = (error as BusinessError).message; 416e41f4b71Sopenharmony_ci console.log('error:' + code + ',' + message); 417e41f4b71Sopenharmony_ci } 418e41f4b71Sopenharmony_ci ``` 419e41f4b71Sopenharmony_ci 420e41f4b71Sopenharmony_ci## getOneCfgFileSync<sup>11+</sup> 421e41f4b71Sopenharmony_ci 422e41f4b71Sopenharmony_cigetOneCfgFileSync(relPath: string, followMode?: FollowXMode, extra?: string): string 423e41f4b71Sopenharmony_ci 424e41f4b71Sopenharmony_ciObtains the path of the configuration file with the highest priority based on the specified file name and follow mode. This API returns the result synchronously. 425e41f4b71Sopenharmony_ci 426e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Customization.ConfigPolicy 427e41f4b71Sopenharmony_ci 428e41f4b71Sopenharmony_ci**Parameters** 429e41f4b71Sopenharmony_ci 430e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 431e41f4b71Sopenharmony_ci| ---------- | ----------------------------- | ---- | ----------------------------------------------------| 432e41f4b71Sopenharmony_ci| relPath | string | Yes | Name of the configuration file. | 433e41f4b71Sopenharmony_ci| followMode | [FollowXMode](#followxmode11) | No | Follow mode. The default value is **DEFAULT**. | 434e41f4b71Sopenharmony_ci| extra | string | No | Custom follow rule. This parameter is valid only when **followMode** is set to **USER_DEFINED**.| 435e41f4b71Sopenharmony_ci 436e41f4b71Sopenharmony_ci**Error codes** 437e41f4b71Sopenharmony_ci 438e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 439e41f4b71Sopenharmony_ci 440e41f4b71Sopenharmony_ci| ID| Error Message | 441e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 442e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3.Parameter verification failed.| 443e41f4b71Sopenharmony_ci 444e41f4b71Sopenharmony_ci**Return value** 445e41f4b71Sopenharmony_ci 446e41f4b71Sopenharmony_ci| Type | Description | 447e41f4b71Sopenharmony_ci| ------ | ------------------------ | 448e41f4b71Sopenharmony_ci| string | Promise used to return the path of the configuration file.| 449e41f4b71Sopenharmony_ci 450e41f4b71Sopenharmony_ci 451e41f4b71Sopenharmony_ci**Example** 452e41f4b71Sopenharmony_ci 453e41f4b71Sopenharmony_ci ```ts 454e41f4b71Sopenharmony_ci import { BusinessError } from '@ohos.base'; 455e41f4b71Sopenharmony_ci 456e41f4b71Sopenharmony_ci try { 457e41f4b71Sopenharmony_ci let relpath: string = 'etc/config.xml'; 458e41f4b71Sopenharmony_ci let extra: string = 'etc/carrier/${telephony.sim.opkey0}'; 459e41f4b71Sopenharmony_ci let result: string = configPolicy.getOneCfgFileSync(relpath, configPolicy.FollowXMode.USER_DEFINED, extra); 460e41f4b71Sopenharmony_ci console.log('result is ' + result); 461e41f4b71Sopenharmony_ci } catch (error) { 462e41f4b71Sopenharmony_ci let code = (error as BusinessError).code; 463e41f4b71Sopenharmony_ci let message = (error as BusinessError).message; 464e41f4b71Sopenharmony_ci console.log('error:' + code + ',' + message); 465e41f4b71Sopenharmony_ci } 466e41f4b71Sopenharmony_ci ``` 467e41f4b71Sopenharmony_ci 468e41f4b71Sopenharmony_ci## getCfgFiles<sup>11+</sup> 469e41f4b71Sopenharmony_ci 470e41f4b71Sopenharmony_cigetCfgFiles(relPath: string, followMode: FollowXMode, callback: AsyncCallback<Array<string>>) 471e41f4b71Sopenharmony_ci 472e41f4b71Sopenharmony_ciObtains a list of configuration files based on the specified file name and follow mode, sorted in ascending order of priority. This API uses an asynchronous callback to return the result. 473e41f4b71Sopenharmony_ciFor example, there are three **config.xml** files (in ascending order of priority): **/system/etc/config.xml**, **/sys_pod/etc/config.xml**, and **/sys_pod/etc/carrier/46060/etc/config.xml**. If the opkey of the default card is **46060** and the follow mode is **SIM_DEFAULT**, **/system/etc/config.xml, /sys_pod/etc/config.xml, /sys_pod/etc/carrier/46060/etc/config.xml** is returned. 474e41f4b71Sopenharmony_ci 475e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Customization.ConfigPolicy 476e41f4b71Sopenharmony_ci 477e41f4b71Sopenharmony_ci**Parameters** 478e41f4b71Sopenharmony_ci 479e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 480e41f4b71Sopenharmony_ci| ---------- | ---------------------------------------- | ---- | -------------------------- | 481e41f4b71Sopenharmony_ci| relPath | string | Yes | Name of the configuration file. | 482e41f4b71Sopenharmony_ci| followMode | [FollowXMode](#followxmode11) | Yes | Follow mode. | 483e41f4b71Sopenharmony_ci| callback | AsyncCallback<Array<string>> | Yes | Callback used to return the file list.| 484e41f4b71Sopenharmony_ci 485e41f4b71Sopenharmony_ci**Error codes** 486e41f4b71Sopenharmony_ci 487e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 488e41f4b71Sopenharmony_ci 489e41f4b71Sopenharmony_ci| ID| Error Message | 490e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 491e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 492e41f4b71Sopenharmony_ci 493e41f4b71Sopenharmony_ci**Example** 494e41f4b71Sopenharmony_ci 495e41f4b71Sopenharmony_ci ```ts 496e41f4b71Sopenharmony_ci import { BusinessError } from '@ohos.base'; 497e41f4b71Sopenharmony_ci 498e41f4b71Sopenharmony_ci try { 499e41f4b71Sopenharmony_ci let relpath: string = 'etc/config.xml'; 500e41f4b71Sopenharmony_ci configPolicy.getCfgFiles(relpath, configPolicy.FollowXMode.SIM_DEFAULT, 501e41f4b71Sopenharmony_ci (error: BusinessError, value: Array<string>) => { 502e41f4b71Sopenharmony_ci if (error == null) { 503e41f4b71Sopenharmony_ci console.log('value is ' + value); 504e41f4b71Sopenharmony_ci } else { 505e41f4b71Sopenharmony_ci console.log('error occurs ' + error); 506e41f4b71Sopenharmony_ci } 507e41f4b71Sopenharmony_ci }); 508e41f4b71Sopenharmony_ci } catch (error) { 509e41f4b71Sopenharmony_ci let code = (error as BusinessError).code; 510e41f4b71Sopenharmony_ci let message = (error as BusinessError).message; 511e41f4b71Sopenharmony_ci console.log('error:' + code + ',' + message); 512e41f4b71Sopenharmony_ci } 513e41f4b71Sopenharmony_ci ``` 514e41f4b71Sopenharmony_ci 515e41f4b71Sopenharmony_ci## getCfgFiles<sup>11+</sup> 516e41f4b71Sopenharmony_ci 517e41f4b71Sopenharmony_cigetCfgFiles(relPath: string, followMode: FollowXMode, extra: string, callback: AsyncCallback<Array<string>>) 518e41f4b71Sopenharmony_ci 519e41f4b71Sopenharmony_ciObtains a list of configuration files based on the specified file name and custom follow rule, sorted in ascending order of priority. This API uses an asynchronous callback to return the result. 520e41f4b71Sopenharmony_ciFor example, there are three **config.xml** files (in ascending order of priority): **/system/etc/config.xml**, **/sys_pod/etc/config.xml**, and **/sys_pod/etc/carrier/46060/etc/config.xml**. If the opkey of card 1 is **46060**, the follow mode is **USER_DEFINED**, and the custom follow rule is **etc/carrier/${telephony.sim.opkey0}**, **/system/etc/config.xml, /sys_pod/etc/config.xml, /sys_pod/etc/carrier/46060/etc/config.xml** is returned. 521e41f4b71Sopenharmony_ci 522e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Customization.ConfigPolicy 523e41f4b71Sopenharmony_ci 524e41f4b71Sopenharmony_ci**Parameters** 525e41f4b71Sopenharmony_ci 526e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 527e41f4b71Sopenharmony_ci| ---------- | ---------------------------------------- | ---- | ------------------------------------------------------ | 528e41f4b71Sopenharmony_ci| relPath | string | Yes | Name of the configuration file. | 529e41f4b71Sopenharmony_ci| followMode | [FollowXMode](#followxmode11) | Yes | Follow mode. | 530e41f4b71Sopenharmony_ci| extra | string | Yes | Custom follow rule. This parameter is valid only when **followMode** is set to **USER_DEFINED**.| 531e41f4b71Sopenharmony_ci| callback | AsyncCallback<Array<string>> | Yes | Callback used to return the file list. | 532e41f4b71Sopenharmony_ci 533e41f4b71Sopenharmony_ci**Error codes** 534e41f4b71Sopenharmony_ci 535e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 536e41f4b71Sopenharmony_ci 537e41f4b71Sopenharmony_ci| ID| Error Message | 538e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 539e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 540e41f4b71Sopenharmony_ci 541e41f4b71Sopenharmony_ci**Example** 542e41f4b71Sopenharmony_ci 543e41f4b71Sopenharmony_ci ```ts 544e41f4b71Sopenharmony_ci import { BusinessError } from '@ohos.base'; 545e41f4b71Sopenharmony_ci 546e41f4b71Sopenharmony_ci try { 547e41f4b71Sopenharmony_ci let relpath: string = 'etc/config.xml'; 548e41f4b71Sopenharmony_ci let extra: string = 'etc/carrier/${telephony.sim.opkey0}'; 549e41f4b71Sopenharmony_ci configPolicy.getCfgFiles(relpath, configPolicy.FollowXMode.SIM_DEFAULT, extra, 550e41f4b71Sopenharmony_ci (error: BusinessError, value: Array<string>) => { 551e41f4b71Sopenharmony_ci if (error == null) { 552e41f4b71Sopenharmony_ci console.log('value is ' + value); 553e41f4b71Sopenharmony_ci } else { 554e41f4b71Sopenharmony_ci console.log('error occurs ' + error); 555e41f4b71Sopenharmony_ci } 556e41f4b71Sopenharmony_ci }); 557e41f4b71Sopenharmony_ci } catch (error) { 558e41f4b71Sopenharmony_ci let code = (error as BusinessError).code; 559e41f4b71Sopenharmony_ci let message = (error as BusinessError).message; 560e41f4b71Sopenharmony_ci console.log('error:' + code + ',' + message); 561e41f4b71Sopenharmony_ci } 562e41f4b71Sopenharmony_ci ``` 563e41f4b71Sopenharmony_ci 564e41f4b71Sopenharmony_ci## getCfgFiles<sup>11+</sup> 565e41f4b71Sopenharmony_ci 566e41f4b71Sopenharmony_cigetCfgFiles(relPath: string, followMode: FollowXMode, extra?: string): Promise<Array<string>> 567e41f4b71Sopenharmony_ci 568e41f4b71Sopenharmony_ciObtains a list of configuration files based on the specified file name and follow mode, sorted in ascending order of priority. This API uses a promise to return the result. 569e41f4b71Sopenharmony_ci 570e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Customization.ConfigPolicy 571e41f4b71Sopenharmony_ci 572e41f4b71Sopenharmony_ci**Parameters** 573e41f4b71Sopenharmony_ci 574e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 575e41f4b71Sopenharmony_ci| ---------- | ----------------------------- | ---- | ------------------------------------------------------ | 576e41f4b71Sopenharmony_ci| relPath | string | Yes | Name of the configuration file. | 577e41f4b71Sopenharmony_ci| followMode | [FollowXMode](#followxmode11) | Yes | Follow mode. | 578e41f4b71Sopenharmony_ci| extra | string | No | Custom follow rule. This parameter is valid only when **followMode** is set to **USER_DEFINED**.| 579e41f4b71Sopenharmony_ci 580e41f4b71Sopenharmony_ci**Error codes** 581e41f4b71Sopenharmony_ci 582e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 583e41f4b71Sopenharmony_ci 584e41f4b71Sopenharmony_ci| ID| Error Message | 585e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 586e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3.Parameter verification failed.| 587e41f4b71Sopenharmony_ci 588e41f4b71Sopenharmony_ci**Return value** 589e41f4b71Sopenharmony_ci 590e41f4b71Sopenharmony_ci| Type | Description | 591e41f4b71Sopenharmony_ci| ---------------------------------- | -------- | 592e41f4b71Sopenharmony_ci| Promise<Array<string>> | Promise used to return the file list.| 593e41f4b71Sopenharmony_ci 594e41f4b71Sopenharmony_ci**Example** 595e41f4b71Sopenharmony_ci 596e41f4b71Sopenharmony_ci ```ts 597e41f4b71Sopenharmony_ci import { BusinessError } from '@ohos.base'; 598e41f4b71Sopenharmony_ci 599e41f4b71Sopenharmony_ci try { 600e41f4b71Sopenharmony_ci let relpath: string = 'etc/config.xml'; 601e41f4b71Sopenharmony_ci let extra: string = 'etc/carrier/${telephony.sim.opkey0}'; 602e41f4b71Sopenharmony_ci configPolicy.getCfgFiles(relpath, configPolicy.FollowXMode.SIM_DEFAULT, extra).then((value: Array<string>) => { 603e41f4b71Sopenharmony_ci console.log('value is ' + value); 604e41f4b71Sopenharmony_ci }).catch((error: BusinessError) => { 605e41f4b71Sopenharmony_ci console.log('getCfgFiles promise ' + error); 606e41f4b71Sopenharmony_ci }); 607e41f4b71Sopenharmony_ci } catch (error) { 608e41f4b71Sopenharmony_ci let code = (error as BusinessError).code; 609e41f4b71Sopenharmony_ci let message = (error as BusinessError).message; 610e41f4b71Sopenharmony_ci console.log('error:' + code + ',' + message); 611e41f4b71Sopenharmony_ci } 612e41f4b71Sopenharmony_ci ``` 613e41f4b71Sopenharmony_ci 614e41f4b71Sopenharmony_ci## getCfgFilesSync<sup>11+</sup> 615e41f4b71Sopenharmony_ci 616e41f4b71Sopenharmony_cigetCfgFilesSync(relPath: string, followMode?: FollowXMode, extra?: string): Array<string> 617e41f4b71Sopenharmony_ci 618e41f4b71Sopenharmony_ciObtains a list of configuration files based on the specified file name and follow mode, sorted in ascending order of priority. This API returns the result synchronously. 619e41f4b71Sopenharmony_ci 620e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Customization.ConfigPolicy 621e41f4b71Sopenharmony_ci 622e41f4b71Sopenharmony_ci**Parameters** 623e41f4b71Sopenharmony_ci 624e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 625e41f4b71Sopenharmony_ci| ---------- | ----------------------------- | ---- | ------------------------------------------------------ | 626e41f4b71Sopenharmony_ci| relPath | string | Yes | Name of the configuration file. | 627e41f4b71Sopenharmony_ci| followMode | [FollowXMode](#followxmode11) | No | Follow mode. The default value is **DEFAULT**. | 628e41f4b71Sopenharmony_ci| extra | string | No | Custom follow rule. This parameter is valid only when **followMode** is set to **USER_DEFINED**.| 629e41f4b71Sopenharmony_ci 630e41f4b71Sopenharmony_ci**Error codes** 631e41f4b71Sopenharmony_ci 632e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 633e41f4b71Sopenharmony_ci 634e41f4b71Sopenharmony_ci| ID| Error Message | 635e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 636e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3.Parameter verification failed.| 637e41f4b71Sopenharmony_ci 638e41f4b71Sopenharmony_ci**Return value** 639e41f4b71Sopenharmony_ci 640e41f4b71Sopenharmony_ci| Type | Description | 641e41f4b71Sopenharmony_ci| ------------------- | -------- | 642e41f4b71Sopenharmony_ci| Array<string> | Promise used to return the file list.| 643e41f4b71Sopenharmony_ci 644e41f4b71Sopenharmony_ci 645e41f4b71Sopenharmony_ci**Example** 646e41f4b71Sopenharmony_ci 647e41f4b71Sopenharmony_ci ```ts 648e41f4b71Sopenharmony_ci import { BusinessError } from '@ohos.base'; 649e41f4b71Sopenharmony_ci 650e41f4b71Sopenharmony_ci try { 651e41f4b71Sopenharmony_ci let relpath: string = 'etc/config.xml'; 652e41f4b71Sopenharmony_ci let extra: string = 'etc/carrier/${telephony.sim.opkey0}'; 653e41f4b71Sopenharmony_ci let result: Array<string> = configPolicy.getCfgFilesSync(relpath, configPolicy.FollowXMode.USER_DEFINED, extra); 654e41f4b71Sopenharmony_ci console.log('result is ' + result); 655e41f4b71Sopenharmony_ci } catch (error) { 656e41f4b71Sopenharmony_ci let code = (error as BusinessError).code; 657e41f4b71Sopenharmony_ci let message = (error as BusinessError).message; 658e41f4b71Sopenharmony_ci console.log('error:' + code + ',' + message); 659e41f4b71Sopenharmony_ci } 660e41f4b71Sopenharmony_ci ``` 661e41f4b71Sopenharmony_ci 662e41f4b71Sopenharmony_ci## getCfgDirListSync<sup>11+</sup> 663e41f4b71Sopenharmony_ci 664e41f4b71Sopenharmony_cigetCfgDirListSync(): Array<string> 665e41f4b71Sopenharmony_ci 666e41f4b71Sopenharmony_ciObtains the list of configuration level directories. This API returns the result synchronously. 667e41f4b71Sopenharmony_ci 668e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Customization.ConfigPolicy 669e41f4b71Sopenharmony_ci 670e41f4b71Sopenharmony_ci**Return value** 671e41f4b71Sopenharmony_ci 672e41f4b71Sopenharmony_ci| Type | Description | 673e41f4b71Sopenharmony_ci| ------------------- | ---------------- | 674e41f4b71Sopenharmony_ci| Array<string> | Promise used to return the configuration level directory list.| 675e41f4b71Sopenharmony_ci 676e41f4b71Sopenharmony_ci 677e41f4b71Sopenharmony_ci**Example** 678e41f4b71Sopenharmony_ci 679e41f4b71Sopenharmony_ci ```ts 680e41f4b71Sopenharmony_ci import { BusinessError } from '@ohos.base'; 681e41f4b71Sopenharmony_ci 682e41f4b71Sopenharmony_ci try { 683e41f4b71Sopenharmony_ci let result: Array<string> = configPolicy.getCfgDirListSync(); 684e41f4b71Sopenharmony_ci console.log('result is ' + result); 685e41f4b71Sopenharmony_ci } catch (error) { 686e41f4b71Sopenharmony_ci let code = (error as BusinessError).code; 687e41f4b71Sopenharmony_ci let message = (error as BusinessError).message; 688e41f4b71Sopenharmony_ci console.log('error:' + code + ',' + message); 689e41f4b71Sopenharmony_ci } 690e41f4b71Sopenharmony_ci ``` 691e41f4b71Sopenharmony_ci 692e41f4b71Sopenharmony_ci## FollowXMode<sup>11+</sup> 693e41f4b71Sopenharmony_ci 694e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Customization.ConfigPolicy 695e41f4b71Sopenharmony_ci 696e41f4b71Sopenharmony_ci| Name | Value | Description | 697e41f4b71Sopenharmony_ci| ---------------- | --- | -------------------------------------------------------------------------------------------------------------------------- | 698e41f4b71Sopenharmony_ci| DEFAULT | 0 | Files are searched based on the follow rules configured in the **followx_file_list.cfg** file at each configuration level. | 699e41f4b71Sopenharmony_ci| NO_RULE_FOLLOWED | 1 | No follow rule is used, even if the **followx_file_list.cfg** file exists. | 700e41f4b71Sopenharmony_ci| SIM_DEFAULT | 10 | Files are searched in **etc/carrier/${opkey}** file at each configuration level based on the opkey of the default card. | 701e41f4b71Sopenharmony_ci| SIM_1 | 11 | Files are searched in **etc/carrier/${opkey}** at each configuration level based on the opkey of card 1. | 702e41f4b71Sopenharmony_ci| SIM_2 | 12 | Files are searched in **etc/carrier/${opkey}** at each configuration level based on the opkey of card 2. | 703e41f4b71Sopenharmony_ci| USER_DEFINED | 100 | Files are searched based on the follow rule passed in **extra**, rather than the **followx_file_list.cfg** file at each configuration level.| 704