在uniaapp/H5+的应用中如何检测手机端是否被ROOT/检测是否在模拟器上运行/防止截屏

在uniaapp/H5+的应用中如何检测手机端是否被ROOT/检测是否在模拟器上运行/防止截屏

检测手机端是否被ROOT

function isRoot() {
	let isRoot = false;
	const 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 (let i = 0; i < paths.length; i++) {
		let path = paths[i];
		var fd = new File(path);
		if (fd.exists()) {
			isRoot = true;
			break;
		}
	}
	if (isRoot) { //检测手机已被root
		/*uni.showToast({
			title:'检测设备已被ROOT',
			icon: 'none',
			duration: 2000
		});
		setTimeout(function(){
			plus.runtime.quit();
		},1000)*/
		uni.showModal({
			title: '提示',
			content: '检测到设备已被ROOT,如仍然坚持要以ROOT过的终端操作APP,自己承担风险和责任,是否继续操作?',
			success: function(res) {
				if (res.confirm) {

				} else if (res.cancel) {
					plus.runtime.quit();
				}
			}
		});
	}
}

检测是否在模拟器上运行

function checkSimulator() { //检测是否模拟器
	var File = plus.android.importClass('java.io.File');
	var isSimulator = false;
	var paths = ["/dev/socket/qemud", "/dev/qemu_pipe", "/system/lib/libc_malloc_debug_qemu.so", "/sys/qemu_trace",
		"/system/bin/qemu-props", "/dev/socket/genyd", "/dev/socket/baseband_genyd"
	];
	for (let i = 0; i < paths.length; i++) {
		let path = paths[i];
		var fd = new File(path);
		if (fd.exists()) {
			isSimulator = true;
		}
	}

	if (isSimulator) {
		uni.showToast({
			title: '禁止应用在模拟器上运行',
			icon: 'none',
			duration: 2000
		});

		setTimeout(function() {
			plus.runtime.quit();
		}, 2000)
	}
	return false;
}

防止截屏

//方法一
var main = plus.android.runtimeMainActivity();
var window = plus.android.importClass("android.view.Window");
main.getWindow().addFlags(0x00002000);
//方法二
var activity = plus.android.runtimeMainActivity();
plus.android.invoke(plus.android.invoke(activity, "getWindow"), "addFlags", 0x00002000);

WebView防止截屏

webView.evalJS('try{document.addEventListener("plusready", function(){ var activity = plus.android.runtimeMainActivity(); plus.android.invoke(plus.android.invoke(activity,"getWindow"),"addFlags",0x00002000); }, false );}catch(e){}');

如果您想要在 Uniapp 应用禁止在模拟器打开应用,可以通过以下方式实现: 1. 获取设备信息 使用 uni.getSystemInfoSync() 方法获取当前设备的信息,该方法返回一个对象,包含了设备的型号、操作系统版本、屏幕宽高等信息。通过判断这些信息是否符合真机设备的特征,来判断当前设备是否模拟器。 2. 判断设备是否模拟器 根据您获取到的设备信息,可以编写一段代码来判断当前设备是否模拟器。比如,您可以根据设备型号是否包含“x86”或者“virtual”等关键字来判断当前设备是否模拟器。 3. 提示用户 如果判断当前设备为模拟器,您可以在应用程序弹出一个提示框,提示用户当前设备不支持在模拟器运行应用程序,需要在真机上运行应用程序。 示例代码: ```javascript // 获取设备信息 let systemInfo = uni.getSystemInfoSync(); // 判断设备是否模拟器 let isSimulator = systemInfo.model.indexOf('x86') >= 0 || systemInfo.model.indexOf('virtual') >= 0; if (isSimulator) { // 提示用户当前设备不支持在模拟器运行应用程序,需要在真机上运行应用程序 uni.showModal({ title: '提示', content: '当前设备不支持在模拟器运行应用程序,请在真机上运行应用程序。', showCancel: false }); } ``` 需要注意的是,这种方法只能判断一部分模拟器,不能保证所有模拟器都被禁止。如果您需要更加严格的限制,可以使用数字证书等方式来保证应用程序只能在真机上运行
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值