Как получить доступ к настройкам устройства программно?
Есть ли способ получить доступ к настройкам устройства программно?
Пример: Настройки > Параметры разработчик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"/>
но после добавления этого разрешения в манифесте вы получите эту ошибку: Разрешение предоставляется только системным приложениям
что означает ваше приложение должно быть системным приложением.