Search code examples
androidbluetoothandroid-wifi

Reboot Android phone via bluetooth?


My project involves having a factory standard (e.g. NOT rooted) Android phone connected to a PC by both bluetooth and wifi but the phone itself is not physically accessible (it's in a locked plastic box) and is not intended for use by a person.

Is there any way to have an android phone reboot itself by sending it some sort of command over bluetooth or wifi?


Solution

  • Yes but it is tricky.

    There are multiple case-scenario but the only condition is that the Bluetooth or the Wi-Fi connexion is established and maintained by a third-party app and that you have access to the code of this specific app (or even better, you are the developper of this app).

    First thing first : the app in question must be able to receive a command either by Bluetooth or Wi-Fi that ask for a reboot.

    If you don't have access to the app code or there are no third-party app involved (meaning its the OS (Android) itself that manages the connexion) that won't work at all.

    Now, onto the tricky part. The simplest way would be that the device in question is rooted and your app can be granted super-user (root) permission. In that case, once it receives the reboot command, it can perform the rebooting process as follow :

    Runtime.getRuntime().exec(new String[]{"/system/bin/su","-c","reboot now"});

    or

    Runtime.getRuntime().exec(new String[]{"/system/xbin/su","-c","reboot now"});

    Because it might depend on where the su binaries are located. In any case it might not work on all device so you should try which method works on the device you will be using.

    Now, if you don't have a rooted device and/or you cannot root the device in question, you might be able to do it if and only if you sign your application as a system application.

    More details here : https://stackoverflow.com/a/4966542/3535408

    I hope it helps !