HarmonyOS API:@ohos.resourceManager (资源管理)

joytrian
发布于 2023-4-4 16:05
浏览
0收藏

版本:v3.1 Beta

@ohos.resourceManager (资源管理)

更新时间: 2023-03-03 17:21


资源管理模块,根据当前configuration:语言、区域、横竖屏、Mcc(移动国家码)和Mnc(移动网络码)、Device capability(设备类型)、Density(分辨率)提供获取应用资源信息读取接口。


说明

本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

import resourceManager from '@ohos.resourceManager';

使用说明

从API Version9开始,Stage模型通过context获取resourceManager对象的方式后,可直接调用其内部获取资源的接口,无需再导入包。此方式FA模型不适用,FA模型还需要先导入包,再调用​​getResourceManager​​接口获取资源对象。


Stage模型下Context的引用方法请参考​​Stage模型的Context详细介绍​​。

import UIAbility from '@ohos.app.ability.UIAbility';

export default class EntryAbility extends UIAbility {
    onWindowStageCreate(windowStage) {
        let context = this.context;
        let resourceManager = context.resourceManager;
    }
}

resourceManager.getResourceManager

getResourceManager(callback: AsyncCallback<ResourceManager>): void

获取当前应用的资源管理对象,使用callback形式返回ResourceManager对象。


模型约束:此接口仅可在FA模型下使用。


系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

callback

AsyncCallback<​​ResourceManager​​>

callback方式返回ResourceManager对象

示例:

resourceManager.getResourceManager((error, mgr) => {
    if (error != null) {
        console.log("error is " + error);
        return; 
    }
    mgr.getString(0x1000000, (error, value) => {
        if (error != null) {
            console.log("error is " + error);
        } else {
            let str = value;
        }
    });
});

注:示例代码中的0x1000000表示资源对应的id, 其可在编译后的文件ResourceTable.txt中找到。

resourceManager.getResourceManager

getResourceManager(bundleName: string, callback: AsyncCallback<ResourceManager>): void

获取指定应用的资源管理对象,使用callback形式返回ResourceManager对象。

模型约束:此接口仅可在FA模型下使用。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

bundleName

string

指定应用的Bundle名称

callback

AsyncCallback<​​ResourceManager​​>

callback方式返回ResourceManager对象

示例:

resourceManager.getResourceManager("com.example.myapplication", (error, mgr) => {
});

resourceManager.getResourceManager

getResourceManager(): Promise<ResourceManager>

获取当前应用的资源管理对象,使用Promise形式返回ResourceManager对象。


模型约束:此接口仅可在FA模型下使用。


系统能力:SystemCapability.Global.ResourceManager

返回值:

类型

说明

Promise<​​ResourceManager​​>

Promise方式返回资源管理对象

示例:

resourceManager.getResourceManager().then(mgr => {
    mgr.getString(0x1000000, (error, value) => {
        if (error != null) {
            console.log("error is " + error);
        } else {
            let str = value;
        }
    });
}).catch(error => {
    console.log("error is " + error);
});


注:示例代码中的0x1000000表示资源对应的id, 其可在编译后的文件ResourceTable.txt中找到。

resourceManager.getResourceManager

getResourceManager(bundleName: string): Promise<ResourceManager>

获取指定应用的资源管理对象,使用Promise形式返回ResourceManager对象。


模型约束:此接口仅可在FA模型下使用。


系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

bundleName

string

指定应用的Bundle名称

返回值:

类型

说明

Promise<​​ResourceManager​​>

Promise方式返回的资源管理对象

示例:

resourceManager.getResourceManager("com.example.myapplication").then(mgr => {
}).catch(error => {
});

Direction

用于表示设备屏幕方向。


系统能力:SystemCapability.Global.ResourceManager

名称

说明

DIRECTION_VERTICAL

0

竖屏

DIRECTION_HORIZONTAL

1

横屏

DeviceType

用于表示当前设备类型。


系统能力:SystemCapability.Global.ResourceManager

名称

说明

DEVICE_TYPE_PHONE

0x00

手机

DEVICE_TYPE_TABLET

0x01

平板

DEVICE_TYPE_CAR

0x02

汽车

DEVICE_TYPE_PC

0x03

电脑

DEVICE_TYPE_TV

0x04

电视

DEVICE_TYPE_WEARABLE

0x06

穿戴

ScreenDensity

用于表示当前设备屏幕密度。


系统能力:SystemCapability.Global.ResourceManager

名称

说明

SCREEN_SDPI

120

小规模的屏幕密度

SCREEN_MDPI

160

中规模的屏幕密度

SCREEN_LDPI

240

大规模的屏幕密度

SCREEN_XLDPI

320

特大规模的屏幕密度

SCREEN_XXLDPI

480

超大规模的屏幕密度

SCREEN_XXXLDPI

640

超特大规模的屏幕密度

Configuration

表示当前设备的状态。


系统能力:SystemCapability.Global.ResourceManager

参数:

名称

类型

可读

可写

说明

direction

​Direction​

当前设备屏幕方向

locale

string

当前系统语言

示例:

resourceManager.getResourceManager((error, mgr) => {
    mgr.getConfiguration((error, value) => {
        let direction = value.direction;
        let locale = value.locale;
    });
});

DeviceCapability

表示设备支持的能力。


系统能力:SystemCapability.Global.ResourceManager

参数:

名称

类型

可读

可写

说明

screenDensity

​ScreenDensity​

当前设备屏幕密度

deviceType

​DeviceType​

当前设备类型

示例:

resourceManager.getResourceManager((error, mgr) => {
    mgr.getDeviceCapability((error, value) => {
        let screenDensity = value.screenDensity;
        let deviceType = value.deviceType;
    });
});

RawFileDescriptor8+

表示rawfile的descriptor信息。

系统能力: SystemCapability.Global.ResourceManager

参数:

名称

类型

可读

可写

说明

fd

number

rawfile的descriptor

offset

number

rawfile的起始偏移量

length

number

rawfile的文件长度

Resource9+

表示的资源信息。

系统能力: 以下各项对应的系统能力均为SystemCapability.Global.ResourceManager

参数:

名称

类型

可读

可写

说明

bundleName

string

应用的bundle名称

moduleName

string

应用的module名称

id

number

资源的id值

ResourceManager

提供访问应用资源的能力。


说明

  • ResourceManager涉及到的方法,仅限基于TS扩展的声明式开发范式使用。
  • 资源文件在工程的resources目录中定义,id可通过$r(资源地址).id的方式获取,例如$r('app.string.test').id。

getStringValue9+

getStringValue(resId: number, callback: AsyncCallback<string>): void

用户获取指定资源ID对应的字符串,使用callback形式返回字符串。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

resId

number

资源ID值

callback

AsyncCallback<string>

异步回调,用于返回获取的字符串

错误码:

以下错误码的详细介绍请参见​​资源管理错误码​​。

错误码ID

错误信息

9001001

If the module resId invalid.

9001002

If the resource not found by resId.

9001006

If the resource re-ref too much.

示例Stage:

  try {
      this.context.resourceManager.getStringValue($r('app.string.test').id, (error, value) => {
        if (error != null) {
            console.log("error is " + error);
        } else {
            let str = value;
        }
    });
  } catch (error) {
      console.error(`callback getStringValue failed, error code: ${error.code}, message: ${error.message}.`)
  }

getStringValue9+

getStringValue(resId: number): Promise<string>

用户获取指定资源ID对应的字符串,使用Promise形式返回字符串。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

resId

number

资源ID值

返回值:

类型

说明

Promise<string>

资源ID值对应的字符串

以下错误码的详细介绍请参见​​资源管理错误码​​。

错误码:

错误码ID

错误信息

9001001

If the resId invalid.

9001002

If the resource not found by resId.

9001006

If the resource re-ref too much.

示例:

try {
  this.context.resourceManager.getStringValue($r('app.string.test').id).then(value => {
      let str = value;
  }).catch(error => {
      console.log("getStringValue promise error is " + error);
  });
} catch (error) {
  console.error(`promise getStringValue failed, error code: ${error.code}, message: ${error.message}.`)
}

getStringValue9+

getStringValue(resource: Resource, callback: AsyncCallback<string>): void

用户获取指定resource对象对应的字符串,使用callback形式返回字符串。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

resource

​Resource​

资源信息

callback

AsyncCallback<string>

异步回调,用于返回获取的字符串

以下错误码的详细介绍请参见​​资源管理错误码​​。

错误码:

错误码ID

错误信息

9001001

If the resId invalid.

9001002

If the resource not found by resId.

9001006

If the resource re-ref too much.

示例:

let resource = {
    bundleName: "com.example.myapplication",
    moduleName: "entry",
    id: $r('app.string.test').id
};
try {
  this.context.resourceManager.getStringValue(resource, (error, value) => {
      if (error != null) {
          console.log("error is " + error);
      } else {
          let str = value;
      }
  });
} catch (error) {
  console.error(`callback getStringValue failed, error code: ${error.code}, message: ${error.message}.`)
}

getStringValue9+

getStringValue(resource: Resource): Promise<string>

用户获取指定resource对象对应的字符串,使用Promise形式返回字符串。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

resource

​Resource​

资源信息

返回值:

类型

说明

Promise<string>

resource对象对应的字符串

以下错误码的详细介绍请参见​​资源管理错误码​​。

错误码:

错误码ID

错误信息

9001001

If the resId invalid.

9001002

If the resource not found by resId.

9001006

If the resource re-ref too much.

示例:

let resource = {
    bundleName: "com.example.myapplication",
    moduleName: "entry",
    id: $r('app.string.test').id
};
try {
  this.context.resourceManager.getStringValue(resource).then(value => {
    let str = value;
  }).catch(error => {
    console.log("getStringValue promise error is " + error);
  });
} catch (error) {
  console.error(`callback getStringValue failed, error code: ${error.code}, message: ${error.message}.`)
}

getStringArrayValue9+

getStringArrayValue(resId: number, callback: AsyncCallback<Array<string>>): void

用户获取指定资源ID对应的字符串数组,使用callback形式返回字符串数组。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

resId

number

资源ID值

callback

AsyncCallback<Array<string>>

异步回调,用于返回获取的字符串数组

以下错误码的详细介绍请参见​​资源管理错误码​​。

错误码:

错误码ID

错误信息

9001001

If the resId invalid.

9001002

If the resource not found by resId.

9001006

If the resource re-ref too much.

示例:

try {
  this.context.resourceManager.getStringArrayValue($r('app.strarray.test').id, (error, value) => {
      if (error != null) {
          console.log("error is " + error);
      } else {
          let strArray = value;
      }
  });
} catch (error) {
  console.error(`callback getStringArrayValue failed, error code: ${error.code}, message: ${error.message}.`)
}

getStringArrayValue9+

getStringArrayValue(resId: number): Promise<Array<string>>

用户获取指定资源ID对应的字符串数组,使用Promise形式返回字符串数组。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

resId

number

资源ID值

返回值:

类型

说明

Promise<Array<string>>

资源ID值对应的字符串数组

以下错误码的详细介绍请参见​​资源管理错误码​​。

错误码:

错误码ID

错误信息

9001001

If the resId invalid.

9001002

If the resource not found by resId.

9001006

If the resource re-ref too much.

示例:

try {
  this.context.resourceManager.getStringArrayValue($r('app.strarray.test').id).then(value => {
      let strArray = value;
  }).catch(error => {
      console.log("getStringArrayValue promise error is " + error);
  });
} catch (error) {
  console.error(`promise getStringArrayValue failed, error code: ${error.code}, message: ${error.message}.`)
}

getStringArrayValue9+

getStringArrayValue(resource: Resource, callback: AsyncCallback<Array<string>>): void

用户获取指定resource对象对应的字符串数组,使用callback形式返回回字符串数组。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

resource

​Resource​

资源信息

callback

AsyncCallback<Array<string>>

异步回调,用于返回获取的字符串数组

以下错误码的详细介绍请参见​​资源管理错误码​​。

错误码:

错误码ID

错误信息

9001001

If the resId invalid.

9001002

If the resource not found by resId.

9001006

If the resource re-ref too much.

示例:

let resource = {
    bundleName: "com.example.myapplication",
    moduleName: "entry",
    id: $r('app.strarray.test').id
};
try {
  this.context.resourceManager.getStringArrayValue(resource, (error, value) => {
    if (error != null) {
        console.log("error is " + error);
    } else {
        let strArray = value;
    }
  });
} catch (error) {
  console.error(`callback getStringArrayValue failed, error code: ${error.code}, message: ${error.message}.`)
}

getStringArrayValue9+

getStringArrayValue(resource: Resource): Promise<Array<string>>

用户获取指定resource对象对应的字符串数组,使用Promise形式返回字符串数组。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

resource

​Resource​

资源信息

返回值:

类型

说明

Promise<Array<string>>

resource对象对应的字符串数组

以下错误码的详细介绍请参见​​资源管理错误码​​。

错误码:

错误码ID

错误信息

9001001

If the resId invalid.

9001002

If the resource not found by resId.

9001006

If the resource re-ref too much.

示例:

let resource = {
    bundleName: "com.example.myapplication",
    moduleName: "entry",
    id: $r('app.strarray.test').id
};
try {
  this.context.resourceManager.getStringArrayValue(resource).then(value => {
    let strArray = value;
  }).catch(error => {
      console.log("getStringArray promise error is " + error);
  });
} catch (error) {
  console.error(`promise getStringArrayValue failed, error code: ${error.code}, message: ${error.message}.`)
}

getMediaContent9+

getMediaContent(resId: number, callback: AsyncCallback<Uint8Array>): void

用户获取指定资源ID对应的媒体文件内容,使用callback形式返回字节数组。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

resId

number

资源ID值

callback

AsyncCallback<Uint8Array>

异步回调,用于返回获取的媒体文件内容

以下错误码的详细介绍请参见​​资源管理错误码​​。

错误码:

错误码ID

错误信息

9001001

If the resId invalid.

9001002

If the resource not found by resId.

示例:

try {
  this.context.resourceManager.getMediaContent($r('app.media.test').id, (error, value) => {
      if (error != null) {
          console.log("error is " + error);
      } else {
          let media = value;
      }
  });
} catch (error) {
  console.error(`callback getMediaContent failed, error code: ${error.code}, message: ${error.message}.`)
}

getMediaContent9+

getMediaContent(resId: number): Promise<Uint8Array>

用户获取指定资源ID对应的媒体文件内容,使用Promise形式返回字节数组。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

resId

number

资源ID值

返回值:

类型

说明

Promise<Uint8Array>

资源ID值对应的媒体文件内容

以下错误码的详细介绍请参见​​资源管理错误码​​。

错误码:

错误码ID

错误信息

9001001

If the resId invalid.

9001002

If the resource not found by resId.

示例:

try {
    this.context.resourceManager.getMediaContent($r('app.media.test').id).then(value => {
        let media = value;
    }).catch(error => {
        console.log("getMediaContent promise error is " + error);
    });
} catch (error) {
  console.error(`promise getMediaContent failed, error code: ${error.code}, message: ${error.message}.`)
}

getMediaContent9+

getMediaContent(resource: Resource, callback: AsyncCallback<Uint8Array>): void

用户获取指定resource对象对应的媒体文件内容,使用callback形式返回字节数组。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

resource

​Resource​

资源信息

callback

AsyncCallback<Uint8Array>

异步回调,用于返回获取的媒体文件内容

以下错误码的详细介绍请参见​​资源管理错误码​​。

错误码:

错误码ID

错误信息

9001001

If the resId invalid.

9001002

If the resource not found by resId.

示例:

let resource = {
    bundleName: "com.example.myapplication",
    moduleName: "entry",
    id: $r('app.media.test').id
};
try {
  this.context.resourceManager.getMediaContent(resource, (error, value) => {
      if (error != null) {
        console.log("error is " + error);
      } else {
        let media = value;
      }
  });
} catch (error) {
  console.error(`callback getMediaContent failed, error code: ${error.code}, message: ${error.message}.`)
}

getMediaContent9+

getMediaContent(resource: Resource): Promise<Uint8Array>

用户获取指定resource对象对应的媒体文件内容,使用Promise形式返回字节数组。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

resource

​Resource​

资源信息

返回值:

类型

说明

Promise<Uint8Array>

resource对象对应的媒体文件内容

以下错误码的详细介绍请参见​​资源管理错误码​​。

错误码:

错误码ID

错误信息

9001001

If the resId invalid.

9001002

If the resource not found by resId.

示例:

let resource = {
    bundleName: "com.example.myapplication",
    moduleName: "entry",
    id: $r('app.media.test').id
};
try {
  this.context.resourceManager.getMediaContent(resource).then(value => {
    let media = value;
  }).catch(error => {
    console.log("getMediaContent promise error is " + error);
  });
} catch (error) {
  console.error(`promise getMediaContent failed, error code: ${error.code}, message: ${error.message}.`)
}

getMediaContentBase649+

getMediaContentBase64(resId: number, callback: AsyncCallback<string>): void

用户获取指定资源ID对应的图片资源Base64编码,使用callback形式返回字符串。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

resId

number

资源ID值

callback

AsyncCallback<string>

异步回调,用于返回获取的图片资源Base64编码

以下错误码的详细介绍请参见​​资源管理错误码​​。

错误码:

错误码ID

错误信息

9001001

If the resId invalid.

9001002

If the resource not found by resId.

示例:

try {
  this.context.resourceManager.getMediaContentBase64($r('app.media.test').id, (error, value) => {
      if (error != null) {
          console.log("error is " + error);
      } else {
          let media = value;
      }
  });       
} catch (error) {
  console.error(`callback getMediaContentBase64 failed, error code: ${error.code}, message: ${error.message}.`)
}

getMediaContentBase649+

getMediaContentBase64(resId: number): Promise<string>

用户获取指定资源ID对应的图片资源Base64编码,使用Promise形式返回字符串。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

resId

number

资源ID值

返回值:

类型

说明

Promise<string>

资源ID值对应的图片资源Base64编码

以下错误码的详细介绍请参见​​资源管理错误码​​。

错误码:

错误码ID

错误信息

9001001

If the resId invalid.

9001002

If the resource not found by resId.

示例:

try {
  this.context.resourceManager.getMediaContentBase64($r('app.media.test').id).then(value => {
      let media = value;
  }).catch(error => {
      console.log("getMediaContentBase64 promise error is " + error);
  });
} catch (error) {
  console.error(`promise getMediaContentBase64 failed, error code: ${error.code}, message: ${error.message}.`)
} 

getMediaContentBase649+

getMediaContentBase64(resource: Resource, callback: AsyncCallback<string>): void

用户获取指定resource对象对应的图片资源Base64编码,使用callback形式返回字符串。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

resource

​Resource​

资源信息

callback

AsyncCallback<string>

异步回调,用于返回获取的图片资源Base64编码

以下错误码的详细介绍请参见​​资源管理错误码​​。

错误码:

错误码ID

错误信息

9001001

If the resId invalid.

9001002

If the resource not found by resId.

示例:

let resource = {
    bundleName: "com.example.myapplication",
    moduleName: "entry",
    id: $r('app.media.test').id
};
try {
  this.context.resourceManager.getMediaContentBase64(resource, (error, value) => {
      if (error != null) {
          console.log("error is " + error);
      } else {
          let media = value;
      }
  });
} catch (error) {
  console.error(`promise getMediaContentBase64 failed, error code: ${error.code}, message: ${error.message}.`)
}

getMediaContentBase649+

getMediaContentBase64(resource: Resource): Promise<string>

用户获取指定resource对象对应的图片资源Base64编码,使用Promise形式返回字符串。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

resource

​Resource​

资源信息

返回值:

类型

说明

Promise<string>

resource对象对应的图片资源Base64编码

以下错误码的详细介绍请参见​​资源管理错误码​​。

错误码:

错误码ID

错误信息

9001001

If the resId invalid.

9001002

If the resource not found by resId.

示例:

let resource = {
    bundleName: "com.example.myapplication",
    moduleName: "entry",
    id: $r('app.media.test').id
};
try {
  this.context.resourceManager.getMediaContentBase64(resource).then(value => {
      let media = value;
  }).catch(error => {
      console.log("getMediaContentBase64 promise error is " + error);
  });
} catch (error) {
  console.error(`promise getMediaContentBase64 failed, error code: ${error.code}, message: ${error.message}.`)
}

getConfiguration

getConfiguration(callback: AsyncCallback<Configuration>): void

用户获取设备的Configuration,使用callback形式返回Configuration对象。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

callback

AsyncCallback<​​Configuration​​>

异步回调,用于返回设备的Configuration

示例:

resourceManager.getResourceManager((error, mgr) => {
    mgr.getConfiguration((error, value) => {
        if (error != null) {
            console.log("error is " + error);
        } else {
            let direction = value.direction;
            let locale = value.locale;
        }
    });
});

getConfiguration

getConfiguration(): Promise<Configuration>

用户获取设备的Configuration,使用Promise形式返回Configuration对象。

系统能力:SystemCapability.Global.ResourceManager

返回值:

类型

说明

Promise<​​Configuration​​>

设备的Configuration

示例:

resourceManager.getResourceManager((error, mgr) => {
    mgr.getConfiguration().then(value => {
        let direction = value.direction;
        let locale = value.locale;
    }).catch(error => {
        console.log("getConfiguration promise error is " + error);
    });
});

getDeviceCapability

getDeviceCapability(callback: AsyncCallback<DeviceCapability>): void

用户获取设备的DeviceCapability,使用callback形式返回DeviceCapability对象。

系统能力:SystemCapability.Global.ResourceManager

参数:

参数名

类型

必填

说明

callback

AsyncCallback<​​DeviceCapability​​>

异步回调,用于返回设备的DeviceCapability

示例:

resourceManager.getResourceManager((error, mgr) => {
    mgr.getDeviceCapability((error, value) => {
        if (error != null) {
            console.log("error is " + error);
        } else {
            let screenDensity = value.screenDensity;
            let deviceType = value.deviceType;
        }
    });
});

getDeviceCapability

getDeviceCapability(): Promise<DeviceCapability>

用户获取设备的DeviceCapability,使用Promise形式返回DeviceCapability对象。

系统能力:SystemCapability.Global.ResourceManager

返回值:

类型

说明

Promise<​​DeviceCapability​​>

设备的DeviceCapability

示例:

resourceManager.getResourceManager((error, mgr) => {
    mgr.getDeviceCapability().then(value => {
        let screenDensity = value.screenDensity;
        let deviceType = value.deviceType;
    }).catch(error => {
        console.log("getDeviceCapability promise error is " + error);
    });
});


文章转载自:​​https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-resource-manager-0000001478181625-V3?catalogVersion=V3#ZH-CN_TOPIC_0000001478181625__使用说明​

已于2023-4-4 16:05:13修改
收藏
回复
举报
回复
    相关推荐