uni-app 鸿蒙平台getSystemInfo获取的windowWidth和Height是0

uni-app 鸿蒙平台getSystemInfo获取的windowWidth和Height是0

项目 信息
产品分类 uniapp/App
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 mac os 11.4
HBuilderX类型 正式
HBuilderX版本号 4.28
手机系统 HarmonyOS NEXT
手机系统版本号 HarmonyOS NEXT Developer Beta1
手机厂商 华为
手机机型 Mate 60
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

示例代码:

uni.getSystemInfo({
success: (res) => {
winSize.value.width = res.windowWidth;  
winSize.value.height = res.windowHeight;  
}
});

操作步骤:

uni.getSystemInfo({
success: (res) => {
winSize.value.width = res.windowWidth;  
winSize.value.height = res.windowHeight;  
}
});

预期结果:

鸿蒙平台getSystemInfo获取的windowWidth和Height是正常

实际结果:

鸿蒙平台getSystemInfo获取的windowWidth和Height是0

bug描述:

鸿蒙平台getSystemInfo获取的windowWidth和Height是0


更多关于uni-app 鸿蒙平台getSystemInfo获取的windowWidth和Height是0的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

你好,我这里测试鸿蒙项目没有出现这个问题,你能详细说一下你是在哪里用的吗?最好给出可以复现的项目

更多关于uni-app 鸿蒙平台getSystemInfo获取的windowWidth和Height是0的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在onload的时候到调用的这个方法 const getWindowSize = () => { uni.getSystemInfo({ success: (res) => { winSize.value.width = res.windowWidth;
winSize.value.height = res.windowHeight;
}
}); };
onLoad(() => { getWindowSize(); });

延迟一下执行是可以获取到的

回复 DCloud_UNI_yuhe: 好的,这个正常是吧 - -

在针对uni-app在鸿蒙平台上调用getSystemInfo方法获取到的windowWidthwindowHeight为0的问题时,这通常意味着系统信息未能正确获取或者当前的环境配置有特定的限制。以下是一个基础的代码示例,展示如何在uni-app中获取系统信息,并结合一些可能的解决方案思路。

基础代码示例

首先,确保你的uni-app项目已经正确配置了对鸿蒙平台的支持。然后,你可以使用以下代码来获取系统信息:

// 在页面的onLoad或mounted生命周期中调用
export default {
  onLoad() {
    uni.getSystemInfo({
      success: (res) => {
        console.log('系统信息:', res);
        console.log('窗口宽度:', res.windowWidth);
        console.log('窗口高度:', res.windowHeight);
      },
      fail: (err) => {
        console.error('获取系统信息失败:', err);
      }
    });
  }
}

解决思路

  1. 检查平台判断: 确保在调用getSystemInfo之前,已经通过uni.getSystemInfoSync().platform确认了当前平台是鸿蒙(如"harmonyos")。不同平台可能有不同的行为表现。
if (uni.getSystemInfoSync().platform === 'harmonyos') {
  // 鸿蒙平台特定处理
  uni.getSystemInfo(/* ... */);
} else {
  // 其他平台处理
}
  1. 异步处理与延迟: 有时候,由于应用启动或页面渲染的异步性,立即获取系统信息可能无法得到准确值。可以尝试在setTimeout中延迟调用getSystemInfo
setTimeout(() => {
  uni.getSystemInfo({
    // ...
  });
}, 500); // 延迟500毫秒
  1. 监听窗口变化: 如果窗口尺寸在应用生命周期中有变化(如旋转屏幕),可以监听windowResize事件来动态获取窗口尺寸。
uni.onWindowResize((res) => {
  console.log('窗口尺寸变化:', res.size);
});
  1. 检查权限与配置: 确保应用具有获取系统信息的必要权限,并且uni-app的配置文件(如manifest.json)中已正确设置了鸿蒙平台的相关配置。

注意

由于鸿蒙平台的特殊性,以上方法可能需要根据实际开发环境和鸿蒙SDK的具体版本进行调整。如果问题依旧存在,建议查阅最新的uni-app官方文档或鸿蒙开发者论坛,看是否有其他开发者遇到并解决了类似问题。同时,确保你的uni-app和鸿蒙SDK都是最新版本,以获得最佳兼容性和功能支持。

回到顶部