android 判断是否打开了蓝牙网络共享

最近做项目遇到需要判断手机是否打开了蓝牙网络共享的开关

在这里插入图片描述

//调用
 isBluetoothPanTetheringOn(context) {
    if (it) {
        Log.i("TAG","已打开")
    } else {
        Log.i("TAG","未打开")
        context.gotoBleShareSettings()
    }
}



/**
 * 是否打开蓝牙网络共享
 *
 */
fun isBluetoothPanTetheringOn(context: Context, callBack: (Boolean) -> Unit) {
        try {
            val bluetoothManager: BluetoothManager = context.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager
            val bluetoothAdapter = bluetoothManager.adapter
            if (bluetoothAdapter == null || bluetoothAdapter.isEnabled) {
                callBack.invoke(false)
            }

            val panProfileClass = Class.forName("android.bluetooth.BluetoothPan")
            val isTetheringOn: Method = panProfileClass.getDeclaredMethod("isTetheringOn")
            val profileListener = object : BluetoothProfile.ServiceListener {
                override fun onServiceConnected(profile: Int, proxy: BluetoothProfile?) {
                    try {
                        if (profile == 5) {
                            val tetheringOn: Boolean = isTetheringOn.invoke(proxy) as Boolean
                            if (tetheringOn) {
                                callBack.invoke(true)
                            } else {
                                callBack.invoke(false)
                            }
                        }
                    } catch (e: Exception) {
                        e.printStackTrace()
                    }
                }

                override fun onServiceDisconnected(profile: Int) {
                    callBack.invoke(false)
                }
            }

            bluetoothAdapter.getProfileProxy(context, profileListener, 5)
        } catch (e: Exception) {
            callBack.invoke(false)
        }
    }



/**
 * 跳转到蓝牙网络共享设置界面
 */
fun Context.gotoBleShareSettings(){
    val intent = Intent()
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
        intent.action = Settings.ACTION_WIRELESS_SETTINGS
    } else {
        intent.component = ComponentName(
            "com.android.settings",
            "com.android.settings.Settings\$TetherSettingsActivity"
        )
    }
    try {
        intent.flags = Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
        intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
        startActivity(intent)
    } catch (e: ActivityNotFoundException) {
        e.printStackTrace()
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值