uni-app uni.getSystemInfoSync() 报Bug
uni-app uni.getSystemInfoSync() 报Bug
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | 10.15 | HBuilderX |
### 操作步骤:
uni.getSystemInfo({
success(e) {
console.log(e);
}
})
预期结果:
返回"deviceId": “xxxx”
### 实际结果:
"deviceId": ""
bug描述:
uni.getSystemInfoSync()
二次启动无法获取 “deviceId”: “”
下面是二次启动数据
{
"errMsg": "getSystemInfo:ok",
"brand": "HUAWEI",
"model": "TEL-AN00a",
"pixelRatio": 3,
"screenWidth": 360,
"screenHeight": 800,
"windowWidth": 360,
"windowHeight": 800,
"statusBarHeight": 24,
"language": "zh-CN",
"system": "Android 10",
"version": "1.9.9.81128",
"fontSizeSetting": "",
"platform": "android",
"SDKVersion": "",
"windowTop": 0,
"windowBottom": 0,
"safeArea": {
"left": 0,
"right": 360,
"top": 24,
"bottom": 800,
"width": 360,
"height": 776
},
"safeAreaInsets": {
"top": 24,
"right": 0,
"bottom": 0,
"left": 0
},
"deviceId": ""
}
更多关于uni-app uni.getSystemInfoSync() 报Bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app uni.getSystemInfoSync() 报Bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个已知的Android平台上的权限问题。deviceId 在首次启动时可能正常获取,但二次启动时返回空字符串,通常是因为应用缺少必要的权限。
核心原因:
在Android系统上,deviceId 的获取依赖于 READ_PHONE_STATE 权限。如果应用没有动态申请该权限,或用户拒绝了该权限,系统将无法提供设备标识信息。
解决方案:
-
检查并配置权限: 在项目的
manifest.json文件中,确保已声明所需权限:{ "app-plus": { "distribute": { "android": { "permissions": [ "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>" ] } } } } -
动态权限申请: 在应用启动时或需要获取
deviceId前,使用uni.authorize动态申请权限:uni.authorize({ scope: 'scope.record', success() { // 授权成功,可调用 uni.getSystemInfo uni.getSystemInfo({ success(e) { console.log(e.deviceId); } }); }, fail() { // 处理授权失败 } });

