Включить USB-отладку (в настройках / приложениях / разработке) программно из приложения - PullRequest
9 голосов
/ 11 августа 2010

Можно ли программно включить отладку USB (в настройках / приложениях / разработке) из моего приложения?

Я смотрел на Permission.WRITE_SETTINGS и http://developer.android.com/reference/android/provider/Settings.System.html,, но не смог найтиничего подходящего.

Ответы [ 4 ]

13 голосов
/ 03 апреля 2012

Для этого вам понадобятся права суперпользователя из приложения.

При этом можно включить ADB, выполнив следующие команды терминала:

setprop persist.service.adb.enable 1
start adbd

В этом блоге приведен отличный пример того, как выполнять эти команды с повышенными разрешениями через su.

5 голосов
/ 25 ноября 2014

Первое: Ваше приложение должно быть системным приложением

Эта строка кода может помочь:

Settings.Global.putInt(getContentResolver(), Global.ADB_ENABLED, 1);

и вам нужно это разрешение:

<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>

но после добавления этого разрешения в манифест вы получите эту ошибку: Разрешение предоставляется только системным приложениям

, что означает Ваше приложение должно быть системным приложением .

5 голосов
/ 13 августа 2010

Это невозможно без использования собственной пользовательской прошивки, которая предоставляет доступ к настройкам безопасности.Смотрите тему здесь: http://groups.google.com/group/android-developers/browse_frm/thread/953c6f0eb0fa9bed#

4 голосов
/ 12 июля 2018

Вы можете включить adb программно, запросив WRITE_SECURE_SETTINGS в манифесте и предоставив его через оболочку adb:

adb shell pm grant your.package.name android.permission.WRITE_SECURE_SETTINGS

Затем вы можете включить adb для API 17 и выше, позвонив по телефону:

Settings.Global.putString(mContext.getContentResolver, Settings.Global.ADB_ENABLED,"1");

Для API от 16 до API 3 вызов:

Settings.Secure.putString(mContext.getContentResolver, Settings.Secure.ADB_ENABLED,"1");

Чтобы отключить adb, замените «1» на «0» в командах

...