# Resourcemanager
## Overview
Provides C APIs for obtaining resources.
**Since**: 12
## Summary
### File
| Name| Description|
| -------- | -------- |
| [ohresmgr.h](ohresmgr_8h.md) | Provides native APIs for obtaining resources.|
| [resmgr_common.h](resmgr__common_8h.md) | Provides the enum types and structures for resource manager APIs.|
### Enum
| Name| Description|
| -------- | -------- |
| [ResourceManager_ErrorCode](#resourcemanager_errorcode) {
SUCCESS = 0, ERROR_CODE_INVALID_INPUT_PARAMETER = 401, ERROR_CODE_RES_ID_NOT_FOUND = 9001001, ERROR_CODE_RES_NOT_FOUND_BY_ID = 9001002,
ERROR_CODE_RES_NAME_NOT_FOUND = 9001003, ERROR_CODE_RES_NOT_FOUND_BY_NAME = 9001004, ERROR_CODE_RES_PATH_INVALID = 9001005, ERROR_CODE_RES_REF_TOO_MUCH = 9001006,
ERROR_CODE_RES_ID_FORMAT_ERROR = 9001007, ERROR_CODE_RES_NAME_FORMAT_ERROR = 9001008, ERROR_CODE_SYSTEM_RES_MANAGER_GET_FAILED = 9001009, ERROR_CODE_OVERLAY_RES_PATH_INVALID = 9001010,
ERROR_CODE_OUT_OF_MEMORY = 9001100
} | Enumerates resource manager error codes.|
| [ScreenDensity](#screendensity) {
SCREEN_SDPI = 120, SCREEN_MDPI = 160, SCREEN_LDPI = 240, SCREEN_XLDPI = 320,
SCREEN_XXLDPI = 480, SCREEN_XXXLDPI = 640
} | Enumerates screen density types.|
### Callback
| Name| Description|
| -------- | -------- |
| [ResourceManager_ErrorCode](#resourcemanager_errorcode)[OH_ResourceManager_GetMediaBase64](#oh_resourcemanager_getmediabase64) (const NativeResourceManager \*mgr, uint32_t resId, char \*\*resultValue, uint64_t \*resultLen, uint32_t density=0) | Obtains the Base64 code of the media resource with the specified screen density based on the specified resource ID.|
| [ResourceManager_ErrorCode](#resourcemanager_errorcode)[OH_ResourceManager_GetMediaBase64ByName](#oh_resourcemanager_getmediabase64byname) (const NativeResourceManager \*mgr, const char \*resName, char \*\*resultValue, uint64_t \*resultLen, uint32_t density=0) | Obtains the Base64 code of the media resource with the specified screen density based on the specified resource name.|
| [ResourceManager_ErrorCode](#resourcemanager_errorcode)[OH_ResourceManager_GetMedia](#oh_resourcemanager_getmedia) (const NativeResourceManager \*mgr, uint32_t resId, uint8_t \*\*resultValue, uint64_t \*resultLen, uint32_t density=0) | Obtains the content of the media resource with the specified screen density based on the specified resource ID.|
| [ResourceManager_ErrorCode](#resourcemanager_errorcode)[OH_ResourceManager_GetMediaByName](#oh_resourcemanager_getmediabyname) (const NativeResourceManager \*mgr, const char \*resName, uint8_t \*\*resultValue, uint64_t \*resultLen, uint32_t density=0) | Obtains the content of the media resource with the specified screen density based on the specified resource name.|
| [ResourceManager_ErrorCode](#resourcemanager_errorcode)[OH_ResourceManager_GetDrawableDescriptor](#oh_resourcemanager_getdrawabledescriptor) (const NativeResourceManager \*mgr, uint32_t resId, ArkUI_DrawableDescriptor \*\*drawableDescriptor, uint32_t density=0, uint32_t type=0) | Obtains the **DrawableDescriptor** object of the icon resource with the specified screen density based on the specified resource ID.|
| [ResourceManager_ErrorCode](#resourcemanager_errorcode)[OH_ResourceManager_GetDrawableDescriptorByName](#oh_resourcemanager_getdrawabledescriptorbyname) (const NativeResourceManager \*mgr, const char \*resName, ArkUI_DrawableDescriptor \*\*drawableDescriptor, uint32_t density=0, uint32_t type=0) | Obtains the **DrawableDescriptor** object of the icon resource with the specified screen density based on the specified resource name.|
## Enum Description
### ResourceManager_ErrorCode
```
enum ResourceManager_ErrorCode
```
**Description**
Enumerates resource manager error codes.
**Since**: 12
| Value| Description|
| -------- | -------- |
| SUCCESS | Success.|
| ERROR_CODE_INVALID_INPUT_PARAMETER | Invalid input parameter.|
| ERROR_CODE_RES_ID_NOT_FOUND | Invalid resource ID.|
| ERROR_CODE_RES_NOT_FOUND_BY_ID | Invalid resource name.|
| ERROR_CODE_RES_NAME_NOT_FOUND | No matching resource found based on the resource ID.|
| ERROR_CODE_RES_NOT_FOUND_BY_NAME | No matching resource found based on the resource name.|
| ERROR_CODE_RES_PATH_INVALID | Invalid relative path.|
| ERROR_CODE_RES_REF_TOO_MUCH | Resource referenced cyclically.|
| ERROR_CODE_RES_ID_FORMAT_ERROR | Failed to format the resource obtained based on the specified resource ID.|
| ERROR_CODE_RES_NAME_FORMAT_ERROR | Failed to format the resource obtained based on the specified resource name.|
| ERROR_CODE_SYSTEM_RES_MANAGER_GET_FAILED | Failed to access system resources.|
| ERROR_CODE_OVERLAY_RES_PATH_INVALID | Invalid overlay path.|
| ERROR_CODE_OUT_OF_MEMORY | Memory overflow.|
### ScreenDensity
```
enum ScreenDensity
```
**Description**
Enumerates screen density types.
**Since**: 12
| Value| Description|
| -------- | -------- |
| SCREEN_SDPI | Screen density with small-scale dots per inch (SDPI).|
| SCREEN_MDPI | Screen density with medium-scale dots per inch (MDPI).|
| SCREEN_LDPI | Screen density with large-scale dots per inch (LDPI).|
| SCREEN_XLDPI | Screen density with extra-large-scale dots per inch (XLDPI).|
| SCREEN_XXLDPI | Screen density with extra-extra-large-scale dots per inch (XXLDPI).|
| SCREEN_XXXLDPI | Screen density with extra-extra-extra-large-scale dots per inch (XXXLDPI).|
## Function Description
### OH_ResourceManager_GetDrawableDescriptor()
```
ResourceManager_ErrorCode OH_ResourceManager_GetDrawableDescriptor (const NativeResourceManager * mgr, uint32_t resId, ArkUI_DrawableDescriptor ** drawableDescriptor, uint32_t density = 0, uint32_t type = 0 )
```
**Description**
Obtains the **DrawableDescriptor** object of the icon resource with the specified screen density based on the specified resource ID.
**Since**: 12
**Parameters**
| Name| Description|
| -------- | -------- |
| mgr | Pointer to **NativeResourceManager**. It is obtained by using the **OH_ResourceManager_InitNativeResourceManager** API.|
| resId | Resource ID.|
| density | Screen density. If the value of **enddensity** is **0**, the current system screen density is used.|
| type | Icon type. The value **0** indicates an application icon, and the value **1** indicates a theme icon.|
| drawableDescriptor | Result of writing **drawableDescriptor**.|
**Returns**
SUCCESS = 0: Operation succeeded.
ERROR_CODE_INVALID_INPUT_PARAMETER 401: The input parameter is invalid. Possible causes: 1. The parameter type is incorrect. 2. Parameter verification failed.
ERROR_CODE_RES_ID_NOT_FOUND 9001001: The resource ID is invalid.
ERROR_CODE_RES_NOT_FOUND_BY_ID 9001002: No matching resource is found based on the resource ID.
### OH_ResourceManager_GetDrawableDescriptorByName()
```
ResourceManager_ErrorCode OH_ResourceManager_GetDrawableDescriptorByName (const NativeResourceManager * mgr, const char * resName, ArkUI_DrawableDescriptor ** drawableDescriptor, uint32_t density = 0, uint32_t type = 0 )
```
Description
Obtains the **DrawableDescriptor** object of the icon resource with the specified screen density based on the specified resource name.
**Since**: 12
**Parameters**
| Name| Description|
| -------- | -------- |
| mgr | Pointer to **NativeResourceManager**. It is obtained by using the **OH_ResourceManager_InitNativeResourceManager** API.|
| resName | Resource name.|
| density | Screen density. If the value of **enddensity** is **0**, the current system screen density is used.|
| type | Icon type. The value **0** indicates an application icon, the value **1** indicates a theme icon, and the value **2** indicates a dynamic icon.|
| drawableDescriptor | Result of writing **drawableDescriptor**.|
**Returns**
SUCCESS = 0: Operation succeeded.
ERROR_CODE_INVALID_INPUT_PARAMETER 401: The input parameter is invalid. Possible causes: 1. The parameter type is incorrect. 2. Parameter verification failed.
ERROR_CODE_RES_NAME_NOT_FOUND 9001003: The resource name is invalid.
ERROR_CODE_RES_NOT_FOUND_BY_NAME 9001004: No matching resource is found based on the resource name.
### OH_ResourceManager_GetMedia()
```
ResourceManager_ErrorCode OH_ResourceManager_GetMedia (const NativeResourceManager * mgr, uint32_t resId, uint8_t ** resultValue, uint64_t * resultLen, uint32_t density = 0 )
```
Description
Obtains the content of the media resource with the specified screen density based on the specified resource ID.
**Since**: 12
**Parameters**
| Name| Description|
| -------- | -------- |
| mgr | Pointer to **NativeResourceManager**. It is obtained by using the **OH_ResourceManager_InitNativeResourceManager** API.|
| resId | Resource ID.|
| density | Screen density. If the value of **enddensity** is **0**, the current system screen density is used.|
| resultValue | Result of writing **resultValue**.|
| resultLen | Length of media written to **resultLen**.|
**Returns**
SUCCESS = 0: Operation succeeded.
ERROR_CODE_INVALID_INPUT_PARAMETER 401: The input parameter is invalid. Possible causes: 1. The parameter type is incorrect. 2. Parameter verification failed.
ERROR_CODE_RES_ID_NOT_FOUND 9001001: The resource ID is invalid.
ERROR_CODE_RES_NOT_FOUND_BY_ID 9001002: No matching resource is found based on the resource ID.
ERROR_CODE_OUT_OF_MEMORY 9001100: The memory overflows.
### OH_ResourceManager_GetMediaBase64()
```
ResourceManager_ErrorCode OH_ResourceManager_GetMediaBase64 (const NativeResourceManager * mgr, uint32_t resId, char ** resultValue, uint64_t * resultLen, uint32_t density = 0 )
```
Description
Obtains the Base64 code of the media resource with the specified screen density based on the specified resource ID.
**Since**: 12
**Parameters**
| Name| Description|
| -------- | -------- |
| mgr | Pointer to **NativeResourceManager**. It is obtained by using the **OH_ResourceManager_InitNativeResourceManager** API.|
| resId | Resource ID.|
| density | Screen density. If the value of **enddensity** is **0**, the current system screen density is used.|
| resultValue | Result of writing **resultValue**.|
| resultLen | Length of media written to **resultLen**.|
**Returns**
SUCCESS = 0: Operation succeeded.
ERROR_CODE_INVALID_INPUT_PARAMETER 401: The input parameter is invalid. Possible causes: 1. The parameter type is incorrect. 2. Parameter verification failed.
ERROR_CODE_RES_ID_NOT_FOUND 9001001: The resource ID is invalid.
ERROR_CODE_RES_NOT_FOUND_BY_ID 9001002: No matching resource is found based on the resource ID.
ERROR_CODE_OUT_OF_MEMORY 9001100: The memory overflows.
### OH_ResourceManager_GetMediaBase64ByName()
```
ResourceManager_ErrorCode OH_ResourceManager_GetMediaBase64ByName (const NativeResourceManager * mgr, const char * resName, char ** resultValue, uint64_t * resultLen, uint32_t density = 0 )
```
Description
Obtains the Base64 code of the media resource with the specified screen density based on the specified resource name.
**Since**: 12
**Parameters**
| Name| Description|
| -------- | -------- |
| mgr | Pointer to **NativeResourceManager**. It is obtained by using the **OH_ResourceManager_InitNativeResourceManager** API.|
| resName | Resource name.|
| density | Screen density. If the value of **enddensity** is **0**, the current system screen density is used.|
| resultValue | Result of writing **resultValue**.|
| resultLen | Length of media written to **resultLen**.|
**Returns**
SUCCESS = 0: Operation succeeded. ERROR_CODE_INVALID_INPUT_PARAMETER 401: The input parameter is invalid. Possible causes: 1. The parameter type is incorrect. 2. Parameter verification failed. ERROR_CODE_RES_NAME_NOT_FOUND 9001003: The resource name is invalid. ERROR_CODE_RES_NOT_FOUND_BY_NAME 9001004: No matching resource is found based on the resource name. ERROR_CODE_OUT_OF_MEMORY 9001100: The memory overflows.
### OH_ResourceManager_GetMediaByName()
```
ResourceManager_ErrorCode OH_ResourceManager_GetMediaByName (const NativeResourceManager * mgr, const char * resName, uint8_t ** resultValue, uint64_t * resultLen, uint32_t density = 0 )
```
Description
Obtains the content of the media resource with the specified screen density based on the specified resource name.
**Since**: 12
**Parameters**
| Name| Description|
| -------- | -------- |
| mgr | Pointer to **NativeResourceManager**. It is obtained by using the **OH_ResourceManager_InitNativeResourceManager** API.|
| resName | Resource name.|
| density | Screen density. If the value of **enddensity** is **0**, the current system screen density is used.|
| resultValue | Result of writing **resultValue**.|
| resultLen | Length of media written to **resultLen**.|
**Returns**
SUCCESS = 0: Operation succeeded.
ERROR_CODE_INVALID_INPUT_PARAMETER 401: The input parameter is invalid. Possible causes: 1. The parameter type is incorrect. 2. Parameter verification failed.
ERROR_CODE_RES_NAME_NOT_FOUND 9001003: The resource name is invalid.
ERROR_CODE_RES_NOT_FOUND_BY_NAME 9001004: No matching resource is found based on the resource name.
ERROR_CODE_OUT_OF_MEMORY 9001100: The memory overflows.