1e41f4b71Sopenharmony_ci# @ohos.configPolicy (配置策略)(系统接口) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci配置策略提供按预先定义的定制配置层级获取对应定制配置目录和文件路径的能力。 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci> **说明:** 6e41f4b71Sopenharmony_ci> 7e41f4b71Sopenharmony_ci> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8e41f4b71Sopenharmony_ci> 9e41f4b71Sopenharmony_ci> 本模块接口均为系统接口。 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci## 导入模块 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_ci使用callback形式返回指定文件名的最高优先级配置文件路径。 22e41f4b71Sopenharmony_ci例如,config.xml在设备中存在以下路径(优先级从低到高):/system/etc/config.xml、/sys_pod/etc/config.xml,最终返回/sys_pod/etc/config.xml。 23e41f4b71Sopenharmony_ci 24e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Customization.ConfigPolicy 25e41f4b71Sopenharmony_ci 26e41f4b71Sopenharmony_ci**参数:** 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 29e41f4b71Sopenharmony_ci| -------- | --------------------------- | ---- | ------------------------------------------ | 30e41f4b71Sopenharmony_ci| relPath | string | 是 | 配置文件名 | 31e41f4b71Sopenharmony_ci| callback | AsyncCallback<string> | 是 | 异步回调,用于返回最高优先级配置文件的路径 | 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ci**错误码**: 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 38e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 39e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ci**示例:** 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_ci使用Promise形式返回指定文件名的最高优先级配置文件路径。 67e41f4b71Sopenharmony_ci 68e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Customization.ConfigPolicy 69e41f4b71Sopenharmony_ci 70e41f4b71Sopenharmony_ci**参数:** 71e41f4b71Sopenharmony_ci 72e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 73e41f4b71Sopenharmony_ci| ------- | ------ | ---- | ---------- | 74e41f4b71Sopenharmony_ci| relPath | string | 是 | 配置文件名 | 75e41f4b71Sopenharmony_ci 76e41f4b71Sopenharmony_ci**错误码**: 77e41f4b71Sopenharmony_ci 78e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 79e41f4b71Sopenharmony_ci 80e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 81e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 82e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 83e41f4b71Sopenharmony_ci 84e41f4b71Sopenharmony_ci**返回值:** 85e41f4b71Sopenharmony_ci 86e41f4b71Sopenharmony_ci| 类型 | 说明 | 87e41f4b71Sopenharmony_ci| ---------------------- | ------------------------ | 88e41f4b71Sopenharmony_ci| Promise<string> | 最高优先级配置文件的路径 | 89e41f4b71Sopenharmony_ci 90e41f4b71Sopenharmony_ci**示例:** 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_ci按优先级从低到高,使用callback形式返回指定文件名所有的文件列表。 114e41f4b71Sopenharmony_ci例如,config.xml在设备中存在以下路径(优先级从低到高):/system/etc/config.xml、/sys_pod/etc/config.xml,最终返回/system/etc/config.xml, /sys_pod/etc/config.xml。 115e41f4b71Sopenharmony_ci 116e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Customization.ConfigPolicy 117e41f4b71Sopenharmony_ci 118e41f4b71Sopenharmony_ci**参数:** 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 121e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | ---- | -------------------------- | 122e41f4b71Sopenharmony_ci| relPath | string | 是 | 配置文件名 | 123e41f4b71Sopenharmony_ci| callback | AsyncCallback<Array<string>> | 是 | 异步回调,用于返回文件列表 | 124e41f4b71Sopenharmony_ci 125e41f4b71Sopenharmony_ci**错误码**: 126e41f4b71Sopenharmony_ci 127e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 128e41f4b71Sopenharmony_ci 129e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 130e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 131e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 132e41f4b71Sopenharmony_ci 133e41f4b71Sopenharmony_ci**示例:** 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_ci按优先级从低到高,使用Promise形式返回指定文件名所有的文件列表。 158e41f4b71Sopenharmony_ci 159e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Customization.ConfigPolicy 160e41f4b71Sopenharmony_ci 161e41f4b71Sopenharmony_ci**参数:** 162e41f4b71Sopenharmony_ci 163e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 164e41f4b71Sopenharmony_ci| ------- | ------ | ---- | ---------- | 165e41f4b71Sopenharmony_ci| relPath | string | 是 | 配置文件名 | 166e41f4b71Sopenharmony_ci 167e41f4b71Sopenharmony_ci**错误码**: 168e41f4b71Sopenharmony_ci 169e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 170e41f4b71Sopenharmony_ci 171e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 172e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 173e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 174e41f4b71Sopenharmony_ci 175e41f4b71Sopenharmony_ci**返回值:** 176e41f4b71Sopenharmony_ci 177e41f4b71Sopenharmony_ci| 类型 | 说明 | 178e41f4b71Sopenharmony_ci| ---------------------------------- | -------- | 179e41f4b71Sopenharmony_ci| Promise<Array<string>> | 文件列表 | 180e41f4b71Sopenharmony_ci 181e41f4b71Sopenharmony_ci**示例:** 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_ci使用callback形式返回配置层级目录列表。 205e41f4b71Sopenharmony_ci 206e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Customization.ConfigPolicy 207e41f4b71Sopenharmony_ci 208e41f4b71Sopenharmony_ci**参数:** 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 211e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | ---- | ---------------------------------- | 212e41f4b71Sopenharmony_ci| callback | AsyncCallback<Array<string>> | 是 | 异步回调,用于返回配置层级目录列表 | 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ci**错误码**: 215e41f4b71Sopenharmony_ci 216e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 217e41f4b71Sopenharmony_ci 218e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 219e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 220e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 221e41f4b71Sopenharmony_ci 222e41f4b71Sopenharmony_ci**示例:** 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_ci使用Promise形式返回配置层级目录列表。 247e41f4b71Sopenharmony_ci 248e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Customization.ConfigPolicy 249e41f4b71Sopenharmony_ci 250e41f4b71Sopenharmony_ci**返回值:** 251e41f4b71Sopenharmony_ci 252e41f4b71Sopenharmony_ci| 类型 | 说明 | 253e41f4b71Sopenharmony_ci| ---------------------------------- | ---------------- | 254e41f4b71Sopenharmony_ci| Promise<Array<string>> | 配置层级目录列表 | 255e41f4b71Sopenharmony_ci 256e41f4b71Sopenharmony_ci**示例:** 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_ci根据提供的跟随模式获取指定文件名的最高优先级配置文件路径,并使用callback形式返回。 279e41f4b71Sopenharmony_ci例如,config.xml在设备中存在以下路径(优先级从低到高):/system/etc/config.xml、/sys_pod/etc/config.xml、/sys_pod/etc/carrier/46060/etc/config.xml,且设备默认卡opkey为46060,设置的followMode为configPolicy.FollowXMode.SIM_DEFAULT,最终返回/sys_pod/etc/carrier/46060/etc/config.xml。 280e41f4b71Sopenharmony_ci 281e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Customization.ConfigPolicy 282e41f4b71Sopenharmony_ci 283e41f4b71Sopenharmony_ci**参数:** 284e41f4b71Sopenharmony_ci 285e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 286e41f4b71Sopenharmony_ci| ---------- | ----------------------------- | ---- | ------------------------------------------ | 287e41f4b71Sopenharmony_ci| relPath | string | 是 | 配置文件名 | 288e41f4b71Sopenharmony_ci| followMode | [FollowXMode](#followxmode11) | 是 | 跟随模式 | 289e41f4b71Sopenharmony_ci| callback | AsyncCallback<string> | 是 | 异步回调,用于返回最高优先级配置文件的路径 | 290e41f4b71Sopenharmony_ci 291e41f4b71Sopenharmony_ci**错误码**: 292e41f4b71Sopenharmony_ci 293e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 294e41f4b71Sopenharmony_ci 295e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 296e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 297e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 298e41f4b71Sopenharmony_ci 299e41f4b71Sopenharmony_ci**示例:** 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_ci根据提供的跟随模式获取指定文件名的最高优先级配置文件路径,并使用callback形式返回。 326e41f4b71Sopenharmony_ci例如,config.xml在设备中存在以下路径(优先级从低到高):/system/etc/config.xml、/sys_pod/etc/config.xml、/sys_pod/etc/carrier/46060/etc/config.xml,且设备卡1的opkey为46060,设置的followMode为configPolicy.FollowXMode.USER_DEFINED,自定义跟随规则为"etc/carrier/${telephony.sim.opkey0}",最终返回/sys_pod/etc/carrier/46060/etc/config.xml。 327e41f4b71Sopenharmony_ci 328e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Customization.ConfigPolicy 329e41f4b71Sopenharmony_ci 330e41f4b71Sopenharmony_ci**参数:** 331e41f4b71Sopenharmony_ci 332e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 333e41f4b71Sopenharmony_ci| ---------- | ----------------------------- | ---- | ------------------------------------------------------ | 334e41f4b71Sopenharmony_ci| relPath | string | 是 | 配置文件名 | 335e41f4b71Sopenharmony_ci| followMode | [FollowXMode](#followxmode11) | 是 | 跟随模式 | 336e41f4b71Sopenharmony_ci| extra | string | 是 | 用户自定义跟随规则,仅在followMode为USER_DEFINED时有效 | 337e41f4b71Sopenharmony_ci| callback | AsyncCallback<string> | 是 | 异步回调,用于返回最高优先级配置文件的路径 | 338e41f4b71Sopenharmony_ci 339e41f4b71Sopenharmony_ci**错误码**: 340e41f4b71Sopenharmony_ci 341e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 342e41f4b71Sopenharmony_ci 343e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 344e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 345e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 346e41f4b71Sopenharmony_ci 347e41f4b71Sopenharmony_ci**示例:** 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_ci根据提供的跟随模式获取指定文件名的最高优先级配置文件路径,并使用Promise形式返回。 375e41f4b71Sopenharmony_ci 376e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Customization.ConfigPolicy 377e41f4b71Sopenharmony_ci 378e41f4b71Sopenharmony_ci**参数:** 379e41f4b71Sopenharmony_ci 380e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 381e41f4b71Sopenharmony_ci| ---------- | ----------------------------- | ---- | ------------------------------------------------------ | 382e41f4b71Sopenharmony_ci| relPath | string | 是 | 配置文件名 | 383e41f4b71Sopenharmony_ci| followMode | [FollowXMode](#followxmode11) | 是 | 跟随模式 | 384e41f4b71Sopenharmony_ci| extra | string | 否 | 用户自定义跟随规则,仅在followMode为USER_DEFINED时必填 | 385e41f4b71Sopenharmony_ci 386e41f4b71Sopenharmony_ci**错误码**: 387e41f4b71Sopenharmony_ci 388e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 389e41f4b71Sopenharmony_ci 390e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 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**返回值:** 395e41f4b71Sopenharmony_ci 396e41f4b71Sopenharmony_ci| 类型 | 说明 | 397e41f4b71Sopenharmony_ci| ---------------------- | ------------------------ | 398e41f4b71Sopenharmony_ci| Promise<string> | 最高优先级配置文件的路径 | 399e41f4b71Sopenharmony_ci 400e41f4b71Sopenharmony_ci**示例:** 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_ci根据提供的跟随模式返回指定文件名的最高优先级配置文件路径。 425e41f4b71Sopenharmony_ci 426e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Customization.ConfigPolicy 427e41f4b71Sopenharmony_ci 428e41f4b71Sopenharmony_ci**参数:** 429e41f4b71Sopenharmony_ci 430e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 431e41f4b71Sopenharmony_ci| ---------- | ----------------------------- | ---- | ----------------------------------------------------| 432e41f4b71Sopenharmony_ci| relPath | string | 是 | 配置文件名 | 433e41f4b71Sopenharmony_ci| followMode | [FollowXMode](#followxmode11) | 否 | 跟随模式,不设置时,默认使用DEFAULT | 434e41f4b71Sopenharmony_ci| extra | string | 否 | 用户自定义跟随规则,仅在followMode为USER_DEFINED时必填 | 435e41f4b71Sopenharmony_ci 436e41f4b71Sopenharmony_ci**错误码**: 437e41f4b71Sopenharmony_ci 438e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 439e41f4b71Sopenharmony_ci 440e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 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**返回值:** 445e41f4b71Sopenharmony_ci 446e41f4b71Sopenharmony_ci| 类型 | 说明 | 447e41f4b71Sopenharmony_ci| ------ | ------------------------ | 448e41f4b71Sopenharmony_ci| string | 最高优先级配置文件的路径 | 449e41f4b71Sopenharmony_ci 450e41f4b71Sopenharmony_ci 451e41f4b71Sopenharmony_ci**示例:** 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_ci按优先级从低到高,根据提供的跟随模式获取指定文件名所有的文件列表,并使用callback形式返回。 473e41f4b71Sopenharmony_ci例如,config.xml在设备中存在以下路径(优先级从低到高):/system/etc/config.xml、/sys_pod/etc/config.xml、/sys_pod/etc/carrier/46060/etc/config.xml,且设备默认卡opkey为46060,设置的followMode为configPolicy.FollowXMode.SIM_DEFAULT,最终返回/system/etc/config.xml, /sys_pod/etc/config.xml, /sys_pod/etc/carrier/46060/etc/config.xml。 474e41f4b71Sopenharmony_ci 475e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Customization.ConfigPolicy 476e41f4b71Sopenharmony_ci 477e41f4b71Sopenharmony_ci**参数:** 478e41f4b71Sopenharmony_ci 479e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 480e41f4b71Sopenharmony_ci| ---------- | ---------------------------------------- | ---- | -------------------------- | 481e41f4b71Sopenharmony_ci| relPath | string | 是 | 配置文件名 | 482e41f4b71Sopenharmony_ci| followMode | [FollowXMode](#followxmode11) | 是 | 跟随模式 | 483e41f4b71Sopenharmony_ci| callback | AsyncCallback<Array<string>> | 是 | 异步回调,用于返回文件列表 | 484e41f4b71Sopenharmony_ci 485e41f4b71Sopenharmony_ci**错误码**: 486e41f4b71Sopenharmony_ci 487e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 488e41f4b71Sopenharmony_ci 489e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 490e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 491e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 492e41f4b71Sopenharmony_ci 493e41f4b71Sopenharmony_ci**示例:** 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_ci按优先级从低到高,根据提供的跟随模式获取指定文件名所有的文件列表,并使用callback形式返回。 520e41f4b71Sopenharmony_ci例如,config.xml在设备中存在以下路径(优先级从低到高):/system/etc/config.xml、/sys_pod/etc/config.xml、/sys_pod/etc/carrier/46060/etc/config.xml,且设备卡1的opkey为46060,设置的followMode为configPolicy.FollowXMode.USER_DEFINED,自定义跟随规则为"etc/carrier/${telephony.sim.opkey0}",最终返回/system/etc/config.xml, /sys_pod/etc/config.xml, /sys_pod/etc/carrier/46060/etc/config.xml。 521e41f4b71Sopenharmony_ci 522e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Customization.ConfigPolicy 523e41f4b71Sopenharmony_ci 524e41f4b71Sopenharmony_ci**参数:** 525e41f4b71Sopenharmony_ci 526e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 527e41f4b71Sopenharmony_ci| ---------- | ---------------------------------------- | ---- | ------------------------------------------------------ | 528e41f4b71Sopenharmony_ci| relPath | string | 是 | 配置文件名 | 529e41f4b71Sopenharmony_ci| followMode | [FollowXMode](#followxmode11) | 是 | 跟随模式 | 530e41f4b71Sopenharmony_ci| extra | string | 是 | 用户自定义跟随规则,仅在followMode为USER_DEFINED时有效 | 531e41f4b71Sopenharmony_ci| callback | AsyncCallback<Array<string>> | 是 | 异步回调,用于返回文件列表 | 532e41f4b71Sopenharmony_ci 533e41f4b71Sopenharmony_ci**错误码**: 534e41f4b71Sopenharmony_ci 535e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 536e41f4b71Sopenharmony_ci 537e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 538e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------------------------- | 539e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.| 540e41f4b71Sopenharmony_ci 541e41f4b71Sopenharmony_ci**示例:** 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_ci根据提供的跟随模式按优先级从低到高,获取指定文件名所有的文件列表,并使用Promise形式返回。 569e41f4b71Sopenharmony_ci 570e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Customization.ConfigPolicy 571e41f4b71Sopenharmony_ci 572e41f4b71Sopenharmony_ci**参数:** 573e41f4b71Sopenharmony_ci 574e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 575e41f4b71Sopenharmony_ci| ---------- | ----------------------------- | ---- | ------------------------------------------------------ | 576e41f4b71Sopenharmony_ci| relPath | string | 是 | 配置文件名 | 577e41f4b71Sopenharmony_ci| followMode | [FollowXMode](#followxmode11) | 是 | 跟随模式 | 578e41f4b71Sopenharmony_ci| extra | string | 否 | 用户自定义跟随规则,仅在followMode为USER_DEFINED时必填 | 579e41f4b71Sopenharmony_ci 580e41f4b71Sopenharmony_ci**错误码**: 581e41f4b71Sopenharmony_ci 582e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 583e41f4b71Sopenharmony_ci 584e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 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**返回值:** 589e41f4b71Sopenharmony_ci 590e41f4b71Sopenharmony_ci| 类型 | 说明 | 591e41f4b71Sopenharmony_ci| ---------------------------------- | -------- | 592e41f4b71Sopenharmony_ci| Promise<Array<string>> | 文件列表 | 593e41f4b71Sopenharmony_ci 594e41f4b71Sopenharmony_ci**示例:** 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_ci根据提供的跟随模式返回指定文件名所有的文件列表。 619e41f4b71Sopenharmony_ci 620e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Customization.ConfigPolicy 621e41f4b71Sopenharmony_ci 622e41f4b71Sopenharmony_ci**参数:** 623e41f4b71Sopenharmony_ci 624e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 625e41f4b71Sopenharmony_ci| ---------- | ----------------------------- | ---- | ------------------------------------------------------ | 626e41f4b71Sopenharmony_ci| relPath | string | 是 | 配置文件名 | 627e41f4b71Sopenharmony_ci| followMode | [FollowXMode](#followxmode11) | 否 | 跟随模式,不设置时,默认使用DEFAULT | 628e41f4b71Sopenharmony_ci| extra | string | 否 | 用户自定义跟随规则,仅在followMode为USER_DEFINED时必填 | 629e41f4b71Sopenharmony_ci 630e41f4b71Sopenharmony_ci**错误码**: 631e41f4b71Sopenharmony_ci 632e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 633e41f4b71Sopenharmony_ci 634e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 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**返回值:** 639e41f4b71Sopenharmony_ci 640e41f4b71Sopenharmony_ci| 类型 | 说明 | 641e41f4b71Sopenharmony_ci| ------------------- | -------- | 642e41f4b71Sopenharmony_ci| Array<string> | 文件列表 | 643e41f4b71Sopenharmony_ci 644e41f4b71Sopenharmony_ci 645e41f4b71Sopenharmony_ci**示例:** 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_ci返回配置层级目录列表。 667e41f4b71Sopenharmony_ci 668e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Customization.ConfigPolicy 669e41f4b71Sopenharmony_ci 670e41f4b71Sopenharmony_ci**返回值:** 671e41f4b71Sopenharmony_ci 672e41f4b71Sopenharmony_ci| 类型 | 说明 | 673e41f4b71Sopenharmony_ci| ------------------- | ---------------- | 674e41f4b71Sopenharmony_ci| Array<string> | 配置层级目录列表 | 675e41f4b71Sopenharmony_ci 676e41f4b71Sopenharmony_ci 677e41f4b71Sopenharmony_ci**示例:** 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**系统能力:** SystemCapability.Customization.ConfigPolicy 695e41f4b71Sopenharmony_ci 696e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 697e41f4b71Sopenharmony_ci| ---------------- | --- | -------------------------------------------------------------------------------------------------------------------------- | 698e41f4b71Sopenharmony_ci| DEFAULT | 0 | 默认模式,此模式下会根据各配置层级下的followx_file_list.cfg文件配置的跟随规则进行文件查找。 | 699e41f4b71Sopenharmony_ci| NO_RULE_FOLLOWED | 1 | 不跟随模式,此模式下不会使用任何跟随规则,即使存在followx_file_list.cfg文件。 | 700e41f4b71Sopenharmony_ci| SIM_DEFAULT | 10 | 跟随默认卡模式,此模式下会根据默认卡的opkey在各配置层级下的etc/carrier/${opkey}下查找文件。 | 701e41f4b71Sopenharmony_ci| SIM_1 | 11 | 跟随卡1模式,此模式下会根据卡1的opkey在各配置层级下的etc/carrier/${opkey}下查找文件。 | 702e41f4b71Sopenharmony_ci| SIM_2 | 12 | 跟随卡2模式,此模式下会根据卡2的opkey在各配置层级下的etc/carrier/${opkey}下查找文件。 | 703e41f4b71Sopenharmony_ci| USER_DEFINED | 100 | 用户自定义模式,此模式会根据入参extra提供的跟随规则进行配置文件获取。此模式会忽略各配置层级下的followx_file_list.cfg文件。 | 704