阅读(2116) (14)

鸿蒙OS 定制化系统能力约束

2020-09-17 10:42:49 更新

场景介绍

HarmonyOS 提供了系统能力管控接口,允许车厂开发类似“系统设置”类应用,基于当前车型限制条件下,车厂可以提供一些系统能力,允许用户进行自定义管控策略。例如,某车型默认在“驾驶模式”状态下不允许播放视频,但可以允许消息弹出框正常弹出。用户可以根据习惯,为了驾驶安全,将消息弹出框也做限制,不允许在“驾驶模式”状态下弹出。本章节主要指导车厂如何使用定制化管控系统能力。

接口说明

HarmonyOS 提供的驾驶安全管控能力支持定制化管理,三方车厂可以通过 DrivingSafetyConfig 类的能力来开发管控类应用。

说明

  1. 不同的车厂提供的能力不同,具体需要参考三方车厂能力限制说明;
  2. 该开放能力只对 OEM 车厂开放,普通三方开发者不可调用。
接口名 描述
getSysDrivingSafetyConfigure() 查询指定的系统能力是否被管控。
setSysDrivingSafetyConfigure() 设定指定的系统能力是否被管控,具体需要参考三方车厂能力限制说明,不同车厂提供的限制能力不同。

目前,HarmonyOS提供了两种系统能力管控的能力:

  • SysDrivingSafetyControlItems.DM_IME: 对系统输入法做管控
  • SysDrivingSafetyControlItems.DM_Video: 对系统视频播放器做管控
  • SysDrivingSafetyControlItems.DM_AUTO_RUN: 对自启动做管控
  • SysDrivingSafetyControlItems.DM_REMOTE_CONTROL: 对远程控制做管控
  • SysDrivingSafetyControlItems.DM_UPGRADE: 对升级做管控

开发步骤

  1. 当开发者要查询当前的系统策略时,可以通过 getSysDrivingSafetyConfigure() 接口获取。

  1. 当开发者需要修改策略时,可以通过 setSysDrivingSafetyConfigure() 接口修改当前系统能力管控策略。

   // 构造查询结果对象
   DrivingSafetyConfigResult result = new DrivingSafetyConfigResult();
   // 调查询能力接口
   try{
       int errorCode = DrivingSafetyConfig.getSysDrivingSafetyConfigure(SysDrivingSafetyControlItems.DM_IME, result);
       if (errorCode != 0) {
           HiLog.error("Get DrivingSafetyConfig Error: %d", errorCode));
           return;
       }
       Boolean isOpen = false;
       if (!result.isOpen()){ // 当前输入法策略为非管控状态
           isOpen = true; // 修改当前输入法策略为管控状态
       }
       // 调用修改管控能力接口,修改管控策略
       errorCode = DrivingSafetyConfig.setSysDrivingSafetyConfigure(SysDrivingSafetyControlItems.DM_IME, isOpen);
       if (errorCode != 0) {
           HiLog.error("Set DrivingSafetyConfigre Error: %d", errorCode);
           return;
       }
   } catch (RemoteException | IllegalArgumentException e) {
       HiLog.error("System Error: %s", e.getMessage())
       return;
   }