HarmonyOS鸿蒙Next中怎么让系统的卡片管理器里不出现锁屏卡片

HarmonyOS鸿蒙Next中怎么让系统的卡片管理器里不出现锁屏卡片 我打开系统的卡片管理器,加了过滤条件也没用,还是出现锁屏卡片

private openFromManager(formName: string) {
  const want: Want = {
    bundleName: this.context.abilityInfo.bundleName,
    abilityName: 'EntryFormAbility',
    parameters: {
      'ohos.extra.param.key.form_dimension': 3,
      'ohos.extra.param.key.form_name': formName,
      'ohos.extra.param.key.module_name': 'entry',
      'ohos.extra.param.key.form_location': 0 // 关键:指定位置为桌面,过滤锁屏卡片
    },
  };
  try {
    formProvider.openFormManager(want)
    LogUtils.log("WidgetManagerTag", "打开卡片管理器")
  } catch (error) {
    ToastUtils.showToast((error as BusinessError).message)
    LogUtils.log("WidgetManagerTag",
      `code: ${(error as BusinessError).code}, message: ${(error as BusinessError).message})`)
  }
}

更多关于HarmonyOS鸿蒙Next中怎么让系统的卡片管理器里不出现锁屏卡片的实战教程也可以访问 https://www.itying.com/category-93-b0.html

9 回复

尊敬的开发者,您好,检查一下form_config.json文件中renderingMode的配置,在API version 17及之前的版本,renderingMode的配置方法如下:value值“0”表示“autoColor”,value值“1”代表“fullColor”,value值“2”代表“singleColor”。其中,“fullColor”配置卡片只出现在桌面中,“singleColor”配置卡片只出现在锁屏中。例如:卡片只在锁屏添加的form_config.json尝试如下配置:

"metadata":[
  {
    "name":"renderingMode",
    "value":"2"
  }
]

在API version 18及之后的版本,renderingMode的配置方法如下:直接在form_config.json中配置"renderingMode": "singleColor"实现卡片只在锁屏添加,或者配置"renderingMode": "fullColor"实现卡片只在桌面添加。

具体可以参考一下锁屏卡片开发指导配置ArkTS卡片的配置文件

更多关于HarmonyOS鸿蒙Next中怎么让系统的卡片管理器里不出现锁屏卡片的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我已解决了,如果完全按照API version 18的来,是不行的。我的手机虽然api > 18, 得加上这个才能避免锁屏卡片出现在卡片管理器中。官网文档似乎有问题

"metadata":[
  {
    "name":"renderingMode",
    "value":"2"
  }
]

尊敬的开发者,您好,根据您反馈的信息文档可能有误,您手机设备Api>18,请问DevEco Studio 编译的SDK版本是多少?麻烦提供一下项目中“build-profile.json5”中 “compatibleSdkVersion”的信息,以及DevEco Studio 的版本号。

HarmonyOS的流畅动画和过渡效果让操作更加顺畅,体验极佳。

在API 20前,卡片在加桌时会触发onAddForm生命周期回调函数,可以通过want.parameters的ohos.extra.param.key.form_location字段获取卡片位置,当字段值为0时,表示卡片位置为桌面。

API20以上的formProvider.openFormManager的参数want:

打开卡片管理页面的请求中的want参数,需包含以下字段。

bundleName: 卡片所属应用的包名。

abilityName: 卡片所属的ability名称。

parameters:

  • ohos.extra.param.key.form_dimension: 卡片尺寸

  • ohos.extra.param.key.form_name: 卡片名称。

  • ohos.extra.param.key.module_name: 卡片所属的模块名称。

并没有

'ohos.extra.param.key.form_location'

这个参数,所以配置也不会生效的。

啥意思详细说下啊, 我真没看懂你要干哈, 给个效果展示,或者现在是啥样的 ,目标是啥样的

openFormManager 里的 form_location 更像是打开卡片管理器时的推荐/入口参数,不一定能强制系统卡片管理器只展示某一种位置的卡片。是否会展示桌面卡片、锁屏卡片,主要取决于卡片配置里声明的可用场景以及系统卡片管理器自身筛选策略。建议先检查 form_config/module.json5 中每个 form 的配置,把不希望出现在锁屏入口的 form 与桌面 form 分开定义,不要复用同一个 formName;如果同一个 form 同时声明了锁屏/桌面能力,系统侧仍可能展示。若确认配置已分离但仍混在一起,建议带最小 demo 和系统版本提单确认是否为管理器筛选问题。

在HarmonyOS Next中,锁屏卡片由系统锁屏服务统一管理,不通过应用控制。用户可在“设置 > 桌面和壁纸 > 锁屏卡片”中关闭或移除卡片,使其不在锁屏界面显示。应用开发者无法通过接口干预系统卡片的展示。

系统卡片管理器暂不支持按卡片位置过滤展示。ohos.extra.param.key.form_location 只在创建卡片时指定添加到哪个位置,不会影响管理器中显示的卡片列表。管理器中会展示当前应用声明支持的所有卡片(包括桌面和锁屏),无法通过开放接口排除锁屏卡片。

回到顶部