cdk
7 天以前 402d8d66a30b62f4bb3343309a089b1b2121eb26
蓝牙模块增加安卓14以上的处理
已修改1个文件
47 ■■■■■ 文件已修改
lib/base_js/js/print.js 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/base_js/js/print.js
@@ -1,5 +1,34 @@
//安卓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');  
@@ -77,6 +106,14 @@
    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,  
@@ -87,6 +124,8 @@
    bluetoothSocket = null;  
function print(mac_address,printStr) {  
    requestBluetoothPermissions(); // 新增:先申请权限
    try {
    if (!mac_address) {  
        mui.toast('请选择蓝牙打印机');  
        return;  
@@ -178,5 +217,11 @@
        bluetoothSocket.close(); //必须关闭蓝牙连接否则意外断开的话打印错误  
    }  
    } catch (e) {
        console.log('蓝牙打印异常:' + e);
        mui.toast('蓝牙打印失败,请检查权限和设备连接');
        try {
            if (bluetoothSocket) bluetoothSocket.close();
        } catch (ex) {}
    }
}