Как получить доступ к настройкам устройства программно?

Есть ли способ получить доступ к настройкам устройства программно?

Пример: Настройки > Параметры разработчикa > Отладка USB > True/False

Спасибо заранее.

Изменить: отладка USB - всего лишь пример. Могу ли я получить доступ ко всем настройкам, которые существуют в настройках на устройстве.

Ответ 1

Settings.Secure.putInt(getActivity(). GetContentResolver(), Settings.Secure.ADB_ENABLED, 1);

Но для этого вам нужен root-доступ. Только системные приложения имеют разрешение на изменение защищенных настроек

Изменить: Попробуйте это, чтобы показать все ANR

Settings.Secure.putInt(ContentResolver, Settings.Secure.ANR_SHOW_BACKGROUND, 0);

и для Не выполнять действия

ActivityManagerNative.getDefault(). SetAlwaysFinish (истина)

но ActivityManagerNative скрыт в стандартном наборе api. вам нужно будет либо отразить, либо использовать этот метод, чтобы получить android.jar. Снова я предполагаю, что для этого нужен root-доступ.

Ответ 2

Попробуйте как:

 int adb = Settings.Secure.getInt(context.getContentResolver(),
  Settings.Secure.ADB_ENABLED, 0);
 // toggle the USB debugging setting
 adb = adb == 0 ? 1 : 0;
 Settings.Secure.putInt(context.getContentResolver(), 
Settings.Secure.ADB_ENABLED, adb);

В AndroidManifest.xml:

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

и, наконец, посмотрите на этот пример

http://code.google.com/p/secure-settings-widget/source/browse/src/com/lieryan/adbwidget/ADBAppWidgetProvider.java?r=eb23b2d6989ccade05f095806db5888f1ba62737

Ответ 3

Я знаю, что этот вопрос старый, но интересный.

Решение Nandeesh работает хорошо. Но это не сработает, если вы хотите изменить некоторые параметры, такие как USB Debugging. Вы должны использовать следующее разрешение.

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

Но это не работает с не системными приложениями. Однако ВОЗМОЖНО сделать это, если у вас есть root-доступ. Вы можете попробовать это решение, где автор решает то же самое.

Вы также можете попробовать https://github.com/alseambusher/adb-toggle

Ответ 4

Если вы используете приложение System, тогда вы просто сделаете это, чтобы включить/отключить USB-отладку

Settings.Secure.putInt(getActivity(). GetContentResolver(), Settings.Secure.ADB_ENABLED, 1);

Для этого также нужен root-доступ. У меня есть встроенное устройство, и я просто выполняю SU, чтобы включить/отключить отладку Usb.

Process proc = Runtime.getRuntime(). exec (new String [] { "su", "-c", "setprop", "persist.service.adb.enable", "0" });

proc.waitFor();

Процесс proc2 = Runtime.getRuntime(). exec (new String [] { "su", "-c", "stop", "adbd" });

proc2.waitFor();

Хорошо, что вам не нужно не размещать ваше приложение в (/system/priv-app/) Это простое приложение, т.е. (/data/app), может сделать это.

Ответ 5

Вы не можете включить отладку USB, если ваше приложение не является системным приложением.

Ответ 6

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

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

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

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

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

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