# HarmonyOS下应用侧如何在团结引擎工程中获取应用上下文

## 问题现象

在HarmonyOS应用中集成团结引擎进行开发时，开发者需要在应用侧获取应用上下文，以便调用系统能力或访问应用级别的资源与状态。由于引擎框架的自身封装特性，直接获取该上下文存在限制，开发者需要了解在团结引擎工程结构下正确获取上下文的方式。

## 背景知识

在HarmonyOS应用开发中，context提供了应用运行时的上下文环境，允许应用获取应用信息、资源路径以及调用系统服务等。在使用团结引擎导出的HarmonyOS工程中，引擎封装了统一的基类供开发者在应用侧实现Ability生命周期。通过继承该基类，开发者可以接入HarmonyOS底层的各项能力。更多有关应用上下文的信息，可以参考[应用上下文](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-inner-application-context)。

## 解决方案

在团结引擎工程中，开发者可以通过继承引擎提供的TuanjiePlayerAbilityBase基类，在其生命周期回调（如onCreate）中使用this.context获取当前Ability的上下文，并将其赋值给全局变量或单例，以便在引擎的其他业务模块中调用。

以下是在应用侧获取并传递context的完整示例：

```ts
import { TuanjiePlayerAbilityBase } from '../generated/Mod';

// 定义全局变量用于存储context
let globalContext: Context | undefined = undefined;

// 继承团结引擎提供的基础Ability类
export default class EntryAbility extends TuanjiePlayerAbilityBase {
  onCreate(want, launchParam) {
    // 在Ability创建时获取context并赋值给全局变量
    globalContext = this.context;
  }
}
```

在其他需要使用context的ArkTS业务模块中，可以直接引入并使用该全局变量globalContext来执行需要上下文支持的系统能力调用（如文件读取、权限管理等）。

