uni-app uni.getSystemInfoSync无法获取设备信息
uni-app uni.getSystemInfoSync无法获取设备信息
信息类别 | 详细信息 |
---|---|
产品分类 | uniapp/App |
PC开发环境操作系统 | Windows |
PC开发环境操作系统版本号 | win11 |
HBuilderX类型 | Alpha |
HBuilderX版本号 | 3.4.12 |
手机系统 | Android |
手机系统版本号 | Android 10 |
手机厂商 | 小米 |
手机机型 | 红米k20pro尊享版 |
页面类型 | vue |
vue版本 | vue3 |
打包方式 | 离线 |
项目创建方式 | HBuilderX |
操作步骤:
在初始化App.vue文件中使用,使用华为平板鸿蒙2.0以及红米k20pro尊享版 安卓10 调试时都无法获取到设备信息,会直接报错
预期结果:
···TypeError: Cannot read properties of undefined (reading 'toLowerCase')
at
at Object.getSystemInfoSync ()
at
at hn ()
at Ut ()
at a.__weh.a.__weh ()
at Pi ()
at Object.to [as render] ()
at Object.we [as render] ()
at Object.mountPage ()···
实际结果:
直接会报错
bug描述:
uni.getSystemInfo报错无法获取设备信息
相关链接:
7 回复
延时获取
问题找到了,不是当前页面得问题。
我也出现同样问题,请问什么导致的
我也出现同样问题,请问什么导致的
3.4.15 已修复
有时候获取不到 13 14 的机型信息
在 uni-app 中,uni.getSystemInfoSync
是一个同步获取系统信息的 API,通常用于获取设备的屏幕尺寸、操作系统、设备型号等信息。如果你发现 uni.getSystemInfoSync
无法获取设备信息,可能是以下几个原因导致的:
1. 运行环境问题
- H5 环境:在 H5 环境中,
uni.getSystemInfoSync
可能无法获取到完整的设备信息,因为 H5 环境受限于浏览器的能力,无法获取到设备的详细信息。 - 小程序环境:在小程序环境中,
uni.getSystemInfoSync
通常可以正常获取设备信息。如果无法获取,可能是小程序平台本身的问题。 - App 环境:在 App 环境中,
uni.getSystemInfoSync
应该可以正常获取设备信息。如果无法获取,可能是 App 的配置或运行环境有问题。
2. 代码问题
- 代码错误:检查代码中是否有拼写错误或逻辑错误。例如,确保你调用的是
uni.getSystemInfoSync
而不是其他类似的 API。 - 异步问题:
uni.getSystemInfoSync
是同步方法,不需要使用await
或then
。如果你错误地将其当作异步方法使用,可能会导致问题。
3. 权限问题
- App 权限:在 App 环境中,某些设备信息可能需要特定的权限才能获取。确保你的 App 已经获取了必要的权限。
- 小程序权限:在小程序环境中,某些设备信息可能需要用户授权才能获取。确保你的小程序已经获取了必要的权限。
4. 平台差异
- 平台兼容性:不同平台(如微信小程序、支付宝小程序、H5、App 等)对
uni.getSystemInfoSync
的支持程度可能有所不同。某些平台可能不支持某些字段或返回的信息较少。
5. 调试方法
- 打印日志:在调用
uni.getSystemInfoSync
后,打印返回的结果,查看具体返回了哪些信息。const systemInfo = uni.getSystemInfoSync(); console.log(systemInfo);
- 检查返回值:根据打印的日志,检查返回的对象中是否包含你需要的设备信息。
6. 解决方案
- H5 环境:如果是在 H5 环境中无法获取设备信息,可以考虑使用其他方法(如
navigator.userAgent
)来获取部分设备信息。 - App 环境:如果是在 App 环境中无法获取设备信息,可以检查 App 的配置,确保已经获取了必要的权限。
- 小程序环境:如果是在小程序环境中无法获取设备信息,可以检查小程序的权限设置,确保已经获取了必要的权限。
示例代码
// 获取系统信息
const systemInfo = uni.getSystemInfoSync();
console.log(systemInfo);
// 获取设备型号
const model = systemInfo.model;
console.log('设备型号:', model);
// 获取操作系统版本
const system = systemInfo.system;
console.log('操作系统:', system);
// 获取屏幕宽度和高度
const screenWidth = systemInfo.screenWidth;
const screenHeight = systemInfo.screenHeight;
console.log('屏幕宽度:', screenWidth, '屏幕高度:', screenHeight);