跳到主要内容

实现应用图标动态切换

AppGallery Kit为使用动态图标的应用客户端提供查询动态图标信息、切换动态图标、恢复默认图标功能。

从版本5.0.3(15)开始,支持实现应用图标动态切换。

场景介绍

  • 查询动态图标信息

    应用内查询可选的动态图标信息。

  • 切换动态图标

    用户点击切换可选的动态图标,系统切换对应的动态图标。

  • 恢复默认图标

    用于停止已选择的动态图标,系统切换默认图标。

业务流程

查询动态图标信息

  1. 用户查询可选的动态图标信息。
  2. 调用接口queryDynamicIcons获取动态图标信息。
  3. 接口返回动态图标信息给应用。
  4. 应用返回结果给用户。

切换动态图标

  1. 用户需要切换动态图标。
  2. 调用接口selectDynamicIcon切换动态图标。
  3. 接口返回选择结果给应用。
  4. 应用返回结果给用户。

恢复默认图标

  1. 用户需要恢复默认图标。
  2. 调用接口disableDynamicIcon禁用动态图标。
  3. 接口返回禁用结果给应用。
  4. 应用返回结果给用户。

约束与限制

  • 图标管理服务不支持模拟器,请使用真机调试。
  • 图标管理服务支持Phone、Tablet、PC/2in1设备。并且从5.1.1(18)版本开始,新增支持Wearable设备,从5.1.1(19)版本开始,新增支持TV设备。

接口说明

图标管理服务提供以下接口,具体API说明详见接口文档

接口名描述
queryDynamicIcons(): Promise<DynamicIconInfo[]>查询动态图标信息接口,用于查询动态图标信息。
selectDynamicIcon(iconId: string): Promise<void>切换动态图标接口,用于切换动态图标。
disableDynamicIcon(): Promise<void>禁用动态图标接口,用于停止动态图标,恢复默认图标。

从版本6.0.0(20)开始,切换动态图标接口支持返回1006800013错误码。

开发步骤

查询动态图标信息

  1. 导入appInfoManager模块及相关公共模块。

    import { appInfoManager } from '@kit.AppGalleryKit';
    import { hilog } from '@kit.PerformanceAnalysisKit';
    import { BusinessError } from '@kit.BasicServicesKit';
  2. 调用queryDynamicIcons方法查询动态图标信息。

    try {
    appInfoManager.queryDynamicIcons()
    .then((queryResult: appInfoManager.DynamicIconInfo[]) => {
    hilog.info(0, 'TAG', "Succeeded in getting DynamicIconInfo size = " + queryResult.length);
    for (let i = 0; i < queryResult.length; i++) {
    hilog.info(0, 'TAG', "Succeeded in getting DynamicIconInfo iconUrl = " + queryResult[i]["iconUrl"] + ", iconId = " + queryResult[i]["iconId"] + ", enabled = "+queryResult[i]["enabled"]);
    }
    }).catch((error: BusinessError) => {
    hilog.error(0, 'TAG', "queryDynamicIcons failed, code: " + error.code + ", exception message: " + error.message);
    });
    } catch (error) {
    hilog.error(0, 'TAG', "queryDynamicIcons exception code: " + error.code + ", exception message: " + error.message);
    }

切换动态图标

  1. 导入appInfoManager模块及相关公共模块。

    import { appInfoManager } from '@kit.AppGalleryKit';
    import { hilog } from '@kit.PerformanceAnalysisKit';
    import { BusinessError } from '@kit.BasicServicesKit';
  2. 调用selectDynamicIcon方法切换动态图标。

    try {
    let iconId: string = 'iconId';
    appInfoManager.selectDynamicIcon(iconId).then(() => {
    hilog.info(0, 'TAG', "Succeeded in selecting dynamic icon");
    }).catch((error: BusinessError) => {
    hilog.error(0, 'TAG', "selectDynamicIcon failed, code: " + error.code + ", exception message: " + error.message);
    });
    } catch (error) {
    hilog.error(0, 'TAG', "selectDynamicIcon exception code: " + error.code + ", exception message: " + error.message);
    }

恢复默认图标

  1. 导入appInfoManager模块及相关公共模块。

    import { appInfoManager } from '@kit.AppGalleryKit';
    import { hilog } from '@kit.PerformanceAnalysisKit';
    import { BusinessError } from '@kit.BasicServicesKit';
  2. 调用disableDynamicIcon方法恢复默认图标。

    try {
    appInfoManager.disableDynamicIcon().then(() => {
    hilog.info(0, 'TAG', "Succeeded in disabling dynamic icon");
    }).catch((error: BusinessError) => {
    hilog.error(0, 'TAG', "disableDynamicIcon failed, code: " + error.code + ", exception message: " + error.message);
    });
    } catch (error) {
    hilog.error(0, 'TAG', "disableDynamicIcon exception code: " + error.code + ", exception message: " + error.message);
    }