最近做项目遇到需要判断手机是否打开了蓝牙网络共享的开关
//调用
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()
}
}