HarmonyOS应用开发学习笔记 应用上下文Context 获取文件夹路径

1、 HarmoryOS Ability页面的生命周期
2、 @Component自定义组件
3、HarmonyOS 应用开发学习笔记 ets组件生命周期
4、HarmonyOS 应用开发学习笔记 ets组件样式定义 @Styles装饰器:定义组件重用样式 @Extend装饰器:定义扩展组件样式
5、HarmonyOS 应用开发学习笔记 state状态管理概述
6、HarmonyOS应用开发学习笔记 包名、icon图标,应用名修改 UIAbility组件介绍、UIAbility启动模式、UIAbility组件基本用法
7、HarmonyOS应用开发学习笔记 UIAbility组件与UI的数据同步 EventHub、globalThis
8、HarmonyOS应用开发学习笔记 UIAbility组件间交互 UIAbility启动,页面跳转结果回调

概叙

Context是应用中对象的上下文,其提供了应用的一些基础信息,例如resourceManager(资源管理)、applicationInfo(当前应用信息)、dir(应用开发路径)、area(文件分区)等,以及应用的一些基本方法,例如createBundleContext()、getApplicationContext()等。UIAbility组件和各种ExtensionAbility派生类组件都有各自不同的Context类。分别有基类Context、ApplicationContext、AbilityStageContext、UIAbilityContext、ExtensionContext、ServiceExtensionContext等Context。

  • 各类Context的继承关系
    在这里插入图片描述
项目 描述
获取UIAbilityContext let abilityStageContext = this.context;
获取AbilityStageContext let abilityStageContext = this.context;
获取ApplicationContext let applicationContext = this.context.getApplicationContext();

Context的典型使用场景

1、 获取应用文件路径

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

export default class EntryAbility extends UIAbility {
    onCreate(want, launchParam) {
    
        let cacheDir = this.context.cacheDir;
        let tempDir = this.context.tempDir;
        let filesDir = this.context.filesDir;
        let databaseDir = this.context.databaseDir;
        let bundleCodeDir = this.context.bundleCodeDir;
        let distributedFilesDir = this.context.distributedFilesDir;
        let preferencesDir = this.context.preferencesDir;
        // ...
        
    }
}

在这里插入图片描述

  • 通过ApplicationContext获取应用级别的应用文件路径,此路径是应用全局信息推荐的存放路径,这些文件会跟随应用的卸载而删除。
项目 描述
bundleCodeDir <路径前缀>/el1/bundle/
cacheDir <路径前缀>/<加密等级>/base/cache/
filesDir <路径前缀>/<加密等级>/base/files/
preferencesDir <路径前缀>/<加密等级>/base/preferences/
tempDir <路径前缀>/<加密等级>/base/temp/
databaseDir <路径前缀>/<加密等级>/database/
distributedFilesDir <路径前缀>/el2/distributedFiles/
  • 通过AbilityStageContext、UIAbilityContext、ExtensionContext获取HAP级别的应用文件路径。此路径是HAP相关信息推荐的存放路径,这些文件会跟随HAP的卸载而删除,但不会影响应用级别路径的文件,除非该应用的HAP已全部卸载。
项目 描述
bundleCodeDir <路径前缀>/el1/bundle/
cacheDir <路径前缀>/<加密等级>/base/haps//cache/
filesDir <路径前缀>/<加密等级>/base/haps//files/
preferencesDir <路径前缀>/<加密等级>/base/haps//preferences/
tempDir <路径前缀>/<加密等级>/base/haps//temp/
databaseDir <路径前缀>/<加密等级>/database//
distributedFilesDir <路径前缀>/el2/distributedFiles//

2、 获取和修改加密分区

上一个场景中,引入了加密等级的概念,通过对Context的area属性的读写来实现获取和设置当前加密分区,支持如下两种加密等级:

  • AreaMode.EL1:设备级加密区,设备开机后可访问的数据区。
  • AreaMode.EL2:用户级加密区,设备开机,首次输入密码后才能够访问的数据区。
import UIAbility from '@ohos.app.ability.UIAbility';

export default class EntryAbility extends UIAbility {
    onCreate(want, launchParam) {
        // 存储普通信息前,切换到EL1设备级加密
        if (this.context.area === 1) { // 获取area
            this.context.area = 0;     // 修改area
        }
        // 存储普通信息

        // 存储敏感信息前,切换到EL2用户级加密
        if (this.context.area === 0) { // 获取area
            this.context.area = 1;     // 修改area
        }
        // 存储敏感信息
    }
}

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-01-10 09:52:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-10 09:52:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-10 09:52:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-10 09:52:03       20 阅读

热门阅读

  1. 人脸三维重建调研

    2024-01-10 09:52:03       37 阅读
  2. K8S学习指南(69)-客户端client-go的使用

    2024-01-10 09:52:03       38 阅读
  3. 关于c++中vector的使用(声明、清空、追加)

    2024-01-10 09:52:03       43 阅读
  4. 基本工具配置

    2024-01-10 09:52:03       33 阅读
  5. OCR识别PDF扫描件

    2024-01-10 09:52:03       36 阅读
  6. c++中getline的用法理解

    2024-01-10 09:52:03       32 阅读