HarmonyOS 鸿蒙Next中SaveButton自定义问题

HarmonyOS 鸿蒙Next中SaveButton自定义问题 我证书申请了ohos.permission.CUSTOMIZE_SAVE_BUTTON权限,但是在工程json5里面设置ohos.permission.CUSTOMIZE_SAVE_BUTTON权限直接报错找不到该权限,SaveButton 的setIcon这些自定义样式方法也找不到,请问该怎么设置

5 回复

请问楼主申请的是发布证书还是调试证书?

  1. 如果在调试证书阶段,可以通过DevEco Studio自动签名完成申请。在自动签名的过程中,将由DevEco Studio完成向AGC申请受限权限的步骤,开发者可直接使用,具体请参考自动签名-操作步骤

  2. 在发布阶段,必须根据以下步骤完成受限权限的手动申请:

  • 在AGC侧申请Profile文件: 申请的Profile文件,将用于后续的应用签名信息配置。应用因特殊场景要求使用受限开放权限,请务必在申请发布Profile“添加Profile页面”时,申请使用相应权限,否则应用将在审核时被驳回。申请Profile的步骤请参考:申请发布Profile

  • 配置文件中声明权限: 需要在module.json5配置文件的requestPermissions标签中声明权限

{
  "module" : {
    // ...
    "requestPermissions":[
      {
        "name" : "ohos.permission.CUSTOMIZE_SAVE_BUTTON",
        "reason": "$string:reason",
        "usedScene": {
          "abilities": [
            "FormAbility"
          ],
          "when":"inuse"
        }
      }
    ]
  }
}

更多关于HarmonyOS 鸿蒙Next中SaveButton自定义问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


看了下文档,这个接口api版本很高 20+,你需要确定是否安装了这个版本的api sdk

setIcon 20+

支持设备PhonePC/2in1TabletTVWearable

setIcon(icon: Resource)

设置保存控件的图标。

需要权限:ohos.permission.CUSTOMIZE_SAVE_BUTTON

元服务API:从API version 20开始,该接口支持在元服务中使用。

系统能力:SystemCapability.ArkUI.ArkUI.Full

https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-security-components-savebutton#seticon20

请检查项目根根目录 build-profile.json5 文件中的 compatibleSdkVersion 字段配置的 API 是否与 setIcon 需求的 API 版本一致/兼容/匹配

cke_142.png

在鸿蒙Next中,SaveButton自定义需使用ArkUI的Button组件。通过@Styles@Extend装饰器定义样式,修改backgroundfontColor等属性。可绑定onClick事件处理保存逻辑。示例:

[@Styles](/user/Styles) function saveBtnStyle() {
  .width(120)
  .height(40)
  .fontColor(Color.White)
  .backgroundColor('#007DFF')
}

Button('保存')
  .saveBtnStyle()
  .onClick(() => {
    // 保存操作
  })

支持通过stateStyles设置不同状态下的样式。

在HarmonyOS Next中,SaveButton的自定义确实需要正确配置权限和使用API。针对您的问题:

  1. 权限配置问题:
  • 确保在module.json5文件中声明权限时使用完整路径:
"requestPermissions": [
  {
    "name": "ohos.permission.CUSTOMIZE_SAVE_BUTTON"
  }
]
  1. API使用问题:
  • 确认导入正确的API包:
import { SaveButton } from '@ohos/common';
  • 自定义方法示例:
let saveButton = new SaveButton();
saveButton.setIcon($r('app.media.custom_icon'));
saveButton.setTextColor('#FF0000');
  1. 常见排查点:
  • 检查SDK版本是否支持该API(建议使用最新SDK)
  • 确认工程配置中已启用对应权限能力
  • 查看编译日志确认权限是否被正确识别

如果仍遇到问题,建议检查API参考文档确认当前版本是否支持这些自定义方法。

回到顶部