Is it possible to enable USB debugging (under settings/applications/development) programmatically from within my app?
I was looking at Permission.WRITE_SETTINGS
and
http://developer.android.com/reference/android/provider/Settings.System.html,
but I couldn't find anything appropriate.
First: Your app must be a system app
This line of code may help:
Settings.Global.putInt(getContentResolver(), Global.ADB_ENABLED, 1);
and you need this permission:
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
but after adding this permission in manifest you will get this error: Permission is only granted to system apps
which means your app must be a system app.
You need to follow these 3 steps
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
Settings.Secure.putInt(requireActivity().contentResolver, Settings.Global.ADB_ENABLED, 1)
or Settings.Secure.putInt(requireActivity().contentResolver, Settings.Global.ADB_ENABLED, 0)
to disable itadb shell pm grant your.package.name android.permission.WRITE_SECURE_SETTINGS
. The device has to be attached to the computer with USB debug active.I developed a simple app that uses this approach to enable/disable some developer options such as Debug USB and Keep Device Screen Active https://play.google.com/store/apps/details?id=it.stzan.devtools
Disclaimer: I am the actual developer of DevTools
You will need root permissions to do so from an app.
That said, it is possible to enable ADB by executing the following terminal commands:
setprop persist.service.adb.enable 1
start adbd
This blog post gives an excellent example of how to execute these commands with escalated permissions through su
.
It's not possible without using your own custom firmware that grants access to the security settings. See thread here: http://groups.google.com/group/android-developers/browse_frm/thread/953c6f0eb0fa9bed#
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With