| | |
| | | //安卓13及以上动态申请蓝牙权限 |
| | | function requestBluetoothPermissions() { |
| | | try { |
| | | var main = plus.android.runtimeMainActivity(); |
| | | var Build = plus.android.importClass('android.os.Build'); |
| | | var sdkInt = Build.VERSION.SDK_INT; |
| | | if (sdkInt >= 31) { // 安卓12(API 31)及以上 |
| | | var permissions = [ |
| | | 'android.permission.BLUETOOTH_SCAN', |
| | | 'android.permission.BLUETOOTH_CONNECT', |
| | | 'android.permission.BLUETOOTH_ADMIN', |
| | | 'android.permission.BLUETOOTH' |
| | | ]; |
| | | var PermissionChecker = plus.android.importClass('androidx.core.content.ContextCompat'); |
| | | var ActivityCompat = plus.android.importClass('androidx.core.app.ActivityCompat'); |
| | | for (var i = 0; i < permissions.length; i++) { |
| | | var hasPermission = PermissionChecker.checkSelfPermission(main, permissions[i]); |
| | | if (hasPermission !== 0) { |
| | | ActivityCompat.requestPermissions(main, [permissions[i]], 1); |
| | | } |
| | | } |
| | | } |
| | | } catch (e) { |
| | | console.log('蓝牙权限申请异常:' + e); |
| | | } |
| | | } |
| | | |
| | | //address=""搜索蓝牙//address=设备mac地址,自动配对给出mac地址的设备 |
| | | function searchDevices(address) { |
| | | requestBluetoothPermissions(); // 新增:先申请权限 |
| | | try { |
| | | //注册类 |
| | | var main = plus.android.runtimeMainActivity(); |
| | | var IntentFilter = plus.android.importClass('android.content.IntentFilter'); |
| | |
| | | filter.addAction(BAdapter.ACTION_STATE_CHANGED); |
| | | |
| | | main.registerReceiver(receiver, filter); //注册监听 |
| | | } catch (e) { |
| | | console.log('搜索蓝牙设备异常:' + e); |
| | | var button1 = document.getElementById('bt1'); |
| | | if (button1) { |
| | | button1.disabled = false; |
| | | button1.value = '搜索设备'; |
| | | } |
| | | } |
| | | } |
| | | |
| | | var device = null, |
| | |
| | | bluetoothSocket = null; |
| | | |
| | | function print(mac_address,printStr) { |
| | | requestBluetoothPermissions(); // 新增:先申请权限 |
| | | try { |
| | | if (!mac_address) { |
| | | mui.toast('请选择蓝牙打印机'); |
| | | return; |
| | |
| | | bluetoothSocket.close(); //必须关闭蓝牙连接否则意外断开的话打印错误 |
| | | |
| | | } |
| | | |
| | | } catch (e) { |
| | | console.log('蓝牙打印异常:' + e); |
| | | mui.toast('蓝牙打印失败,请检查权限和设备连接'); |
| | | try { |
| | | if (bluetoothSocket) bluetoothSocket.close(); |
| | | } catch (ex) {} |
| | | } |
| | | } |