uni-app 华为MatePad Pro 12.6英寸 HarmonyOS 2.0.0 plus.navigator.isSimulator() 返回true
uni-app 华为MatePad Pro 12.6英寸 HarmonyOS 2.0.0 plus.navigator.isSimulator() 返回true
| 开发环境 | 版本号 | 项目创建方式 |
|----------|--------|--------------|
| HBuilderX | 3.2.16 | 云端 |
产品分类:HTML5+
手机系统:Android
手机系统版本号:Android 10
手机厂商:华为
手机机型:MatePad Pro 12.6英寸 Harmony 2.0.0
示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title></title>
</head>
<body>
<div style="margin-top: 120px">
<div style="text-align: center"><img width="120px" height="120px" src="img/logo.png" /></div>
<div style="margin-top: 30px; font-size: 16px; text-align: center">Loading...</div>
</div>
<script type="text/javascript">
var plusReady = function (callback) {
if (window.plus) {
return callback(window.plus);
}
document.addEventListener(
'plusready',
function () {
callback(window.plus);
},
false
);
};
var quitApp = function () {
plusReady(function (plus) {
var IS_IOS = plus.os.name === 'iOS';
if (IS_IOS) {
plus.ios.import('UIApplication').sharedApplication().performSelector('exit');
} else {
plus.runtime.quit();
}
});
};
var isRoot = function () {
plusReady(function (plus) {
var IS_IOS = plus.os.name === 'iOS';
if (IS_IOS) {
return plus.navigator.isRoot();
} else {
return isAndroidRoot();
}
function isAndroidRoot() {
if (!IS_IOS) {
return false;
}
var paths = [
'/sbin/su',
'/system/bin/su',
'/system/xbin/su',
'/data/local/xbin/su',
'/data/local/bin/su',
'/system/sd/xbin/su',
'/system/bin/failsafe/su',
'/data/local/su'
];
var File = plus.android.importClass('java.io.File');
for (var i = 0, l = paths.length; i < l; i++) {
var path = paths[i];
var fd = new File(path);
if (fd.exists()) {
return true;
}
}
return false;
}
});
};
</script>
<script type="text/javascript">
plusReady(function (plus) {
plus.screen.lockOrientation('portrait-primary');
var IS_IOS = plus.os.name === 'iOS';
if (plus.navigator.isSimulator()) {
return plus.nativeUI.confirm(
'禁止在模拟器中运行!',
function (e) {
console.log(e.index);
quitApp();
},
{
buttons: ['好吧']
}
);
}
if (isRoot()) {
var notice = IS_IOS ? '您的设备已越狱,请注意防范风险。' : '您的设备已被ROOT,请注意防范风险。';
plus.nativeUI.confirm(notice, function () {}, {
title: '风险提示',
buttons: ['知道了']
});
}
});
</script>
</body>
</html>
操作步骤:
- 加载如上html
预期结果:
- 不弹框
实际结果:
- 弹框: 禁止在模拟器中运行
bug描述:
- 华为MatePad Pro 12.6英寸 HarmonyOS 2.0.0 plus.navigator.isSimulator() 返回true
更多关于uni-app 华为MatePad Pro 12.6英寸 HarmonyOS 2.0.0 plus.navigator.isSimulator() 返回true的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
我手机Harmony 2.0.0系统, 没有这个情况
更新HBX3.3.0 版本看看
更多关于uni-app 华为MatePad Pro 12.6英寸 HarmonyOS 2.0.0 plus.navigator.isSimulator() 返回true的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在华为MatePad Pro 12.6英寸(HarmonyOS 2.0.0)上,plus.navigator.isSimulator() 返回 true 是一个已知的设备识别问题。
原因分析:
- HarmonyOS 设备识别机制:早期HarmonyOS版本在某些设备上可能被错误识别为模拟器
- plus.navigator.isSimulator() 的实现逻辑:该方法通过检测设备特征来判断是否为模拟器,但HarmonyOS的设备特征可能与模拟器的特征有重叠
- 系统版本兼容性:HarmonyOS 2.0.0 是早期版本,可能存在与uni-app运行时的兼容性问题
解决方案:
方案一:针对HarmonyOS设备特殊处理
plusReady(function (plus) {
// 检测是否为HarmonyOS设备
var isHarmonyOS = plus.os.name === 'Android' &&
(plus.os.vendor === 'HUAWEI' ||
navigator.userAgent.indexOf('HarmonyOS') > -1);
// 如果是HarmonyOS设备,跳过模拟器检测
if (!isHarmonyOS && plus.navigator.isSimulator()) {
return plus.nativeUI.confirm(
'禁止在模拟器中运行!',
function (e) {
console.log(e.index);
quitApp();
},
{
buttons: ['好吧']
}
);
}
// 继续执行其他逻辑...
});
方案二:使用更精确的设备检测方法
function isRealDevice() {
var plus = window.plus;
if (!plus) return true;
// HarmonyOS设备特殊处理
var ua = navigator.userAgent;
var isHarmonyDevice = ua.indexOf('HarmonyOS') > -1 ||
(plus.os.vendor === 'HUAWEI' && plus.os.version.indexOf('2.') === 0);
if (isHarmonyDevice) {
return true; // HarmonyOS设备视为真机
}
// 其他设备使用原逻辑
return !plus.navigator.isSimulator();
}
方案三:临时绕过检测(不推荐)
// 临时方案:注释掉模拟器检测代码
// if (plus.navigator.isSimulator()) {
// return plus.nativeUI.confirm(...);
// }

