HarmonyOS API:通用能力的接口

joytrian
发布于 2023-4-2 10:03
浏览
0收藏

版本:v3.1 Beta

BaseContext

更新时间: 2023-02-17 09:19


BaseContext抽象类用于表示继承的子类Context是Stage模型还是FA模型。


说明

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


系统能力:SystemCapability.Ability.AbilityRuntime.Core

名称

类型

可读

可写

说明

stageMode

boolean

表示Stage模型还是FA模型。

示例:

class MyContext extends BaseContext {
    constructor(stageMode) {
        this.stageMode = stageMode;
    }
}

Context

更新时间: 2023-02-17 09:19


Context模块提供了ability或application的上下文的能力,包括允许访问特定于应用程序的资源、请求和验证权限等。


说明

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

本模块接口仅可在Stage模型下使用。

属性

系统能力:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core

名称

类型

可读

可写

说明

resourceManager

resmgr.ResourceManager

资源管理对象。

applicationInfo

ApplicationInfo

当前应用程序的信息。

cacheDir

string

缓存目录。

tempDir

string

临时目录。

filesDir

string

文件目录。

databaseDir

string

数据库目录。

preferencesDir

string

preferences目录。

bundleCodeDir

string

安装包目录。

distributedFilesDir

string

分布式文件目录。

eventHub

string

事件中心,提供订阅、取消订阅、触发事件对象。

area

​AreaMode​

文件分区信息。

Context.createModuleContext

createModuleContext(moduleName: string): Context;

根据模块名创建上下文Context。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数:

名称

类型

必填

说明

moduleName

string

模块名。

返回值:

类型

说明

Context

上下文Context。

示例:

let moduleContext = this.context.createModuleContext("entry");

Context.getApplicationContext

getApplicationContext(): ApplicationContext;

获取应用上下文Context。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

返回值:

类型

说明

Context

应用上下文Context。

示例:

let applicationContext = this.context.getApplicationContext();

AreaMode

文件分区

系统能力:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core

名称

说明

EL1

0

设备级加密区。

EL2

1

用户凭据加密区。

ErrorObserver

更新时间: 2023-02-17 09:19


定义异常监听。

onUnhandledException

onUnhandledException(errMsg: string): void;

将在js运行时引发用户未捕获的异常时调用。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数:

参数名

类型

必填

说明

errMsg

string

有关异常的消息和错误堆栈跟踪。

示例:

import errorManager from '@ohos.app.ability.errorManager'

var observer = {
    onUnhandledException(errorMsg) {
        console.log('onUnhandledException, errorMsg: ', errorMsg)
    }
}
try {
    errorManager.on("error", observer);
} catch (paramError) {
    console.log("error: " + paramError.code + ", " + paramError.message);
}

ExtensionContext

更新时间: 2023-03-10 16:42


ExtensionContext是Extension的上下文环境,继承自Context。


ExtensionContext模块提供访问特定Extension的资源的能力,对于拓展的Extension,可直接将ExtensionContext作为上下文环境,或者定义一个继承自ExtensionContext的类型作为上下文环境。


说明

  • 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
  • 本模块接口仅可在Stage模型下使用。

属性

系统能力:SystemCapability.Ability.AbilityRuntime.Core

名称

类型

可读

可写

说明

currentHapModuleInfo

​HapModuleInfo​

所属Hap包的信息。

(详见SDK目录下的 api\bundle\hapModuleInfo.d.ts)

config

​Configuration​

所属Module的配置信息。

(详见SDK目录下的 api\@ohos.app.ability.Configuration.d.ts)

extensionAbilityInfo

​ExtensionAbilityInfo​

所属Extension的信息。

(详见SDK目录下的 api\bundle\extensionAbilityInfo.d.ts)

使用场景

ExtensionContext主要用于查询所属Extension的信息、Module的配置信息以及Hap包的信息,开发者可根据自身业务需求使用对应的信息。此处以ServiceExtension为例,展示ExtensionContext的一种使用场景。

场景说明:

一个应用为了适配不同性能的设备,提供了highPerformance、midPerformance、lowPerformance三个Module,这三个Module均提供了一个ServiceExtension给entry使用。安装应用时,应用市场会根据设备的性能,选择对应Module的Hap包与entry的Hap包进行打包安装,实际运行应用时,entry将解析ServiceExtensionContext.HapModuleInfo获取Hap包信息,根据不同的Hap包执行不同的业务逻辑。

HarmonyOS API:通用能力的接口 -鸿蒙开发者社区

示例:

三个Module内都定义一个相同名称的ServiceExtension:

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

import Want from '@ohos.application.Want'
export default class TheServiceExtension extends ExtensionAbility {
    onCreate(want:Want) {
        console.log('ServiceAbility onCreate, want: ' + want.abilityName);
        // 通过globalThis传递ExtensionContext给entry
        globalThis.ExtensionContext = this;
    }

    onRequest(want, startId) {
        console.log('ServiceAbility onRequest, want: ' + want.abilityName + ', startId: ' + startId);
    }

    onConnect(want) {
        console.log('ServiceAbility onConnect, want:' + want.abilityName);
        return null;
    }

    onDisconnect(want) {
        console.log('ServiceAbility onDisconnect, want:' + want.abilityName);
    }

    onDestroy() {
        console.log('ServiceAbility onDestroy');
    }
};

在entry的MainAbility的onCreate回调内启动ServiceExtension

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

let options = {
    onConnect() {
        console.info('onConnect callback')
    },
    onDisconnect() {
        console.info('onDisconnect callback')
    },
    onFailed() {
        console.info('onFailed callback')
    }
}



export default class MainAbility extends UIAbility {
    onCreate() {
        console.log("[Demo] MainAbility onCreate");
        let wantExt = {
            deviceId: "",
            bundleName: "com.example.TheServiceExtension",
            abilityName: "TheServiceExtension",
        };
        this.context.connectServiceExtensionAbility(wantExt, options);
    }
};

在entry内新建一个ServiceModule.ts,专用于执行业务逻辑

export default class ServiceModel {
    moduleName: string;

    constructor() {}

    executeTask() {
        if (globalThis.ExtensionContext == undefined) {
            console.log("ERROR, ServiceExtension does not exist");
            return;
        }

        var moduleInfo = globalThis.ExtensionContext.currentHapModuleInfo;
        this.moduleName = moduleInfo.name;
        // 根据moduleName执行不同的业务逻辑,实现对不同性能设备的区分
        switch (this.moduleName) {
            case "highPerformance":
                console.log("This is high performance device.");
                // 执行对应业务逻辑
                break;
            case "midPerformance":
                console.log("This is mid performance device.");
                // 执行对应业务逻辑
                break;
            case "lowPerformance":
                console.log("This is low performance device.");
                // 执行对应业务逻辑
                break;
            default:
                console.log("ERROR, invalid moduleName.");
                break;
        }
    }
};


文章转载自:​​https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-inner-application-extensioncontext-0000001477981361-V3?catalogVersion=V3#ZH-CN_TOPIC_0000001477981361__使用场景​

已于2023-4-2 10:03:15修改
收藏
回复
举报
回复