切换模式
pda 扫码逻辑记录
scanCode.js
js
let main, receiver, filter;
let _codeQueryTag = false;
export const initScan = () => {
let _this = this;
main = plus.android.runtimeMainActivity(); //获取activity
var IntentFilter = plus.android.importClass("android.content.IntentFilter");
filter = new IntentFilter();
// filter.addAction('com.honeywell.scan.broadcast'); // 换你的广播动作
filter.addAction('mukang');
receiver = plus.android.implements(
"io.dcloud.feature.internal.reflect.BroadcastReceiver",
{
onReceive: function (context, intent) {
plus.android.importClass(intent);
let code = intent.getStringExtra('data'); // 换你的广播标签
queryCode(code);
},
}
);
};
export const startScan = () => {
main.registerReceiver(receiver, filter);
console.log('新实例-开始扫码')
};
export const stopScan = () => {
if(!main) return
main.unregisterReceiver(receiver);
//解绑uni的全局$on 不然会有bug
uni.$off('SCAN_CODE')
console.log('结束');
};
export const queryCode = (code) => {
//防重复
if (_codeQueryTag) return false;
_codeQueryTag = true;
setTimeout(function () {
_codeQueryTag = false;
}, 150);
var id = code;
//id就是扫码的结果
console.log('触发');
uni.$emit("SCAN_CODE", { code: id });
};
let main, receiver, filter;
let _codeQueryTag = false;
export const initScan = () => {
let _this = this;
main = plus.android.runtimeMainActivity(); //获取activity
var IntentFilter = plus.android.importClass("android.content.IntentFilter");
filter = new IntentFilter();
// filter.addAction('com.honeywell.scan.broadcast'); // 换你的广播动作
filter.addAction('mukang');
receiver = plus.android.implements(
"io.dcloud.feature.internal.reflect.BroadcastReceiver",
{
onReceive: function (context, intent) {
plus.android.importClass(intent);
let code = intent.getStringExtra('data'); // 换你的广播标签
queryCode(code);
},
}
);
};
export const startScan = () => {
main.registerReceiver(receiver, filter);
console.log('新实例-开始扫码')
};
export const stopScan = () => {
if(!main) return
main.unregisterReceiver(receiver);
//解绑uni的全局$on 不然会有bug
uni.$off('SCAN_CODE')
console.log('结束');
};
export const queryCode = (code) => {
//防重复
if (_codeQueryTag) return false;
_codeQueryTag = true;
setTimeout(function () {
_codeQueryTag = false;
}, 150);
var id = code;
//id就是扫码的结果
console.log('触发');
uni.$emit("SCAN_CODE", { code: id });
};
在vue组件中使用
js
// 进入组件开始挂载扫码
try {
initScan()
startScan();
uni.$on("SCAN_CODE", ({
code
}) => {
// 判断code如果有回车符,则去掉
if (code.indexOf('\n') !== -1) {
code = code.replace(/\n/g, '')
}
// 判断code如果有换行符,则去掉
if (code.indexOf('\r') !== -1) {
code = code.replace(/\r/g, '')
}
this.changeCode(code)
});
} catch (err) {
console.log(err, '扫码功能加载错误');
}
----------------------------------------------------
beforeMount() {
console.log('---组件挂载前卸载之前实例');
stopScan()
},
// 进入组件开始挂载扫码
try {
initScan()
startScan();
uni.$on("SCAN_CODE", ({
code
}) => {
// 判断code如果有回车符,则去掉
if (code.indexOf('\n') !== -1) {
code = code.replace(/\n/g, '')
}
// 判断code如果有换行符,则去掉
if (code.indexOf('\r') !== -1) {
code = code.replace(/\r/g, '')
}
this.changeCode(code)
});
} catch (err) {
console.log(err, '扫码功能加载错误');
}
----------------------------------------------------
beforeMount() {
console.log('---组件挂载前卸载之前实例');
stopScan()
},