'android enable disable bluetooth via command line
I am trying to enable disable bluetooth on android device using command line.
I can enable it using
adb shell am start -a android.bluetooth.adapter.action.REQUEST_ENABLE
But it prompts user to 'allow' or 'deny'.
I also see there is option to launch ble settings first like
adb shell am start -a android.settings.BLUETOOTH_SETTINGS
and then enable disable adb shell input keyevent **
But it won't be device independent.
Solution 1:[1]
For bluetooth status:
adb shell settings get global bluetooth_on
or
adb shell settings list global |grep ^bluetooth_on
Enable Bluetooth
adb shell settings put global bluetooth_on 1
Disable Bluetooth
adb shell settings put global bluetooth_on 0
Via am - Instead of request, use enable
adb shell am broadcast -a android.intent.action.BLUETOOTH_ENABLE --ez state true
Via Keyevents
adb shell am start -a android.settings.BLUETOOTH_SETTINGS
adb shell input keyevent 19
adb shell input keyevent 23
Edit 2019-06-22:
Finally figured out a way to toggle bluetooth on/off on Android 8.0 and newer versions without root, "bluetooth_on" doesn't seems to work on latest android versions anymore:
Enable Bluetooth - No root required
adb shell settings put global bluetooth_disabled_profiles 1
Disable Bluetooth - No root required
adb shell settings put global bluetooth_disabled_profiles 0
And since above works fine then of course content works fine aswell:
Enable Bluetooth - No root required
adb shell content insert --uri content://settings/global --bind name:s:bluetooth_disabled_profiles --bind value:s:1 --user 0
Disable Bluetooth - No root required:
adb shell content insert --uri content://settings/global --bind name:s:bluetooth_disabled_profiles --bind value:s:0 --user 0
Solution 2:[2]
To enable:
adb shell service call bluetooth_manager 6
To disable:
adb shell service call bluetooth_manager 8
Solution 3:[3]
To enable
svc bluetooth enable
To disable
svc bluetooth disable
Solution 4:[4]
For folks who are wondering from where did the numbers 6 and 8 came from. It came from this aidl file: https://android.googlesource.com/platform/system/bt/+/master/binder/android/bluetooth/IBluetoothManager.aidl Start counting from the first function listed in this aidl and you will see the enable function is the 6th one and the disable is the 8th one in the list.
Solution 5:[5]
To run commands listed in previous comment, you need to be root:
adb root
Enable:
adb shell service call bluetooth_manager 6
Disable:
adb shell service call bluetooth_manager 8
Solution 6:[6]
To enable:
adb shell service call bluetooth_manager 6
To disable:
adb shell service call bluetooth_manager 9
Tested and worked on a Samsung Galaxy S7.
Solution 7:[7]
This might be a bit of a hacky solution but once you try to enable or disable bluetooth, you can use the right key action followed by the enter key action to select the allow button which is usually on the very right.
This should work even if your device is not rooted.
To enable:
adb shell am start -a android.bluetooth.adapter.action.REQUEST_ENABLE
adb shell input keyevent 22 (right)
adb shell input keyevent 22 (right)
adb shell input keyevent 66 (enter)
To disable:
adb shell am start -a android.bluetooth.adapter.action.REQUEST_DISABLE
adb shell input keyevent 22 (right)
adb shell input keyevent 22 (right)
adb shell input keyevent 66 (enter)
Solution 8:[8]
As awm129 has pointed out, solutions using service call
aren't device-independent. While I am unable to completely eliminate the use of service call
, the following solution should be more device-independent:
To disable:
pm disable com.android.bluetooth
To enable:
pm enable com.android.bluetooth
service call bluetooth_manager 6
I hope someone will eventually find a service call
-free solution.
Solution 9:[9]
On Xiaomi Mi 4i / MIUI 9:
To enable:
adb shell service call bluetooth_manager 8
To disable:
adb shell service call bluetooth_manager 10
This can also run within Andorid like:
service call bluetooth_manager 10
Solution 10:[10]
The best way to use settings put
, svc
, and actions
.
It works for all Android versions and all devices.
val isOn =true
val command = "adb shell settings put global bluetooth_on ${
if (isOn) {
"1"
} else {
"0"
}
} && adb shell svc bluetooth ${
if (isOn) {
"enable"
} else {
"disable"
}
} && adb shell am start -a android.bluetooth.adapter.action.${
if (isOn) {
"REQUEST_ENABLE"
} else {
"REQUEST_DISABLE"
}
} && adb shell am broadcast -a android.intent.action.BLUETOOTH_ENABLE --ez state $isOn"
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow