# Resource Limitations and Access
> **NOTE:**
>- Screen density is supported since API version 4.
>- Other qualifiers are supported since API version 6.
## Resource Qualifiers
The name of a resource qualifier consists of one or more qualifiers that represent the application scenarios or device characteristics, covering the screen density, and more. The qualifiers are separated using hyphens \(-\). When creating a qualifiers file under **resources**, you need to understand the file naming conventions and the rules for matching qualifiers files and the device status.
## Naming Conventions for Resource Qualifiers
- Qualifiers are ordered in the following sequence: screen density. You can select one or multiple qualifiers to name your file based on your application scenarios and device characteristics, while following the preceding sequence. The MCC and MNC must exist at the same time.
- The qualifiers are separated using hyphens \(-\), for example, **res-dark-ldpi.json**.
- Value range of qualifiers: The value of each qualifier must meet the requirements specified in the following table. Otherwise, the resource files in the **resources** directory cannot be matched. The qualifiers are case sensitive.
- Qualifier prefix: The name of a qualifier file in the **resources** file has the prefix **res**, for example, **res-ldpi.json**.
- Default resource qualifier file: By default, the resource qualifier file in **resources** is **res-defaults.json**.
- In the resource qualifier file, color enumeration cannot be used to set resources.
**Table 1** Resource qualifiers
Data Type
|
Description and Value Range
|
MCC and MNC6+
|
Indicates the device MCC and SIM card MNC, for example, mcc460-mnc01 and mcc460-mnc02.
|
Screen orientation6+
|
Indicates the screen orientation of the device. The value can be:
- vertical: portrait orientation
- horizontal: landscape orientation
|
Device type6+
|
Indicates the device type. The value can be:
- phone: smartphone
- tablet: tablet
- tv: smart TV
- wearable: wearable
|
Screen density
|
Indicates the screen density of the device, in dpi. The value can be:
- ldpi: low-density screen (~120 dpi) (0.75 x Reference density)
- mdpi: medium-density screen (~160 dpi) (reference density)
- hdpi: high-density screen (~240 dpi) (1.5 x Reference density)
- xhdpi: extra high-density screen (~320 dpi) (2.0 x Reference density)
- xxhdpi: extra extra high-density screen (~480 dpi) (3.0 x Reference density)
- xxxhdpi: extra extra extra high-density screen (~640 dpi) (4.0 x Reference density)
|
## **Rules for Matching Qualifiers Files and Device Resources**
- Qualifiers are matched with the device resources in the following priorities: MCC and MNC \>screen orientation \> night mode \> device type \> screen density. If no matching resource qualifier file is found, the default resource qualifier file is used.
- If a qualifier file contains resource qualifiers, their values must be consistent with the current device status so that the file can be used for matching the device status. For example, the **res-hdpi.json** qualifier file does not match the device density **xhdpi**.
## Referencing Resources in the JS Module
You can use the $r syntax in the application development files **.hml** and **.js** to format the JSON resources in the **resources** directory of the JS module and obtain the corresponding resources.
Attribute
|
Data Type
|
Description
|
$r
|
(key: string) => string
|
Obtains the resource content that matches the specific qualifiers, for example, this.$r('strings.hello loaded).
Parameter description:
- key: key value defined in the resource qualifier file, for example, strings.hello.
Example of res-defaults.json:
{
strings: {
hello: 'hello world'
}
}
|
## Example
resources/res-dark.json:
```
{
"image": {
"clockFace": "common/dark_face.png"
},
"colors": {
"background": "#000000"
}
}
```
resources/res-defaults.json:
```
{
"image": {
"clockFace": "common/face.png"
},
"colors": {
"background": "#ffffff"
}
}
```
```
```
> **NOTE:**
>The resource qualifer file does not support color enumeration.