uni-app 鸿蒙手机uni.getScreenBrightness获取屏幕亮度永远都是-1

uni-app 鸿蒙手机uni.getScreenBrightness获取屏幕亮度永远都是-1

开发环境 版本号 项目创建方式
Windows 11 HBuilderX

示例代码:

uni.getScreenBrightness({
success: (res) => {
this.luminance = res.value
}
});

操作步骤:

uni.getScreenBrightness({
success: (res) => {
this.luminance = res.value
}
});

预期结果:

this.luminance为0-1的数值

实际结果:

this.luminance为-1

bug描述:

【报Bug】uniapp 鸿蒙手机uni.getScreenBrightness获取屏幕亮度永远都是-1,手机的屏幕是最亮是仍然是-1


更多关于uni-app 鸿蒙手机uni.getScreenBrightness获取屏幕亮度永远都是-1的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

该bug反馈内容基本完整:标题明确描述了问题,BUG描述清晰说明了现象(获取屏幕亮度始终为-1),代码示例可直接运行,复现步骤简洁但足够明确(仅需调用API),预期结果(0-1数值)符合文档规范,实际结果异常,分类信息齐全(含HBuilderX 4.87、HarmonyOS 5.1.0等关键版本)。
根据知识库分析,bug成立。依据API文档,uni.getScreenBrightness在HarmonyOS Next平台自4.81版本起支持,成功回调应返回0~1的数值。用户使用HBuilderX 4.87(高于最低要求4.81)仍返回-1,不符合文档定义,表明存在异常。知识库未提及-1为合法返回值,通常表示获取失败。
可能原因:鸿蒙5.1.0系统权限限制或API适配问题。建议用户检查是否开启"修改系统设置"权限(需在manifest.json配置),并尝试通过系统信息API确认设备兼容性。若问题持续,建议提交至官方issue跟踪系统并提供权限配置详情。当前无直接替代方案,但可临时通过uni.getSystemInfoSync()获取基础屏幕参数作为参考。 内容为 AI 生成,仅供参考

更多关于uni-app 鸿蒙手机uni.getScreenBrightness获取屏幕亮度永远都是-1的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙系统上,uni.getScreenBrightness 返回 -1 是已知的兼容性问题。这是由于鸿蒙系统对屏幕亮度API的权限管理或接口实现与Android存在差异导致的。

解决方案:

  1. 检查权限配置manifest.jsonapp-plus -> distribute -> android 节点下添加以下权限配置:

    "permissions": [
        "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
    ]
    
  2. 使用条件编译处理 由于该问题仅出现在鸿蒙设备,建议使用条件编译进行兼容处理:

    // #ifdef APP-PLUS
    if (uni.getSystemInfoSync().platform.toLowerCase().includes('harmony')) {
        // 鸿蒙设备使用默认值或降级方案
        this.luminance = 0.8; // 设置默认亮度值
    } else {
        uni.getScreenBrightness({
            success: (res) => {
                this.luminance = res.value;
            }
        });
    }
    // #endif
回到顶部