17

有没有办法以编程方式访问设备设置?

例如:设置 > 开发人员选项 > USB 调试 > True/False

提前致谢。

编辑:USB调试只是一个例子。我可以访问设备设置中存在的所有设置吗?

4

6 回答 6

15

Settings.Secure.putInt(getActivity().getContentResolver(),Settings.Secure.ADB_EN​​ABLED, 1);

但是您需要 root 访问权限才能执行此操作。只有系统应用有权更改安全设置

编辑:试试这个以显示所有 ANR

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

并且对于不要保留活动

ActivityManagerNative.getDefault().setAlwaysFinish(true)

但 ActivityManagerNative 隐藏在标准 api 集中。您将需要进行反射或使用此方法来获取 android.jar。我再次猜想这需要root访问权限

于 2012-08-16T10:34:57.643 回答
5

尝试如下:

 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

于 2012-08-16T10:35:06.593 回答
3

我知道这个问题很老但很有趣。

Nandeesh 的解决方案效果很好。但如果您想更改某些设置(例如 USB 调试),它就不起作用。您必须使用以下权限。

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

但是,它不适用于非系统应用程序。但是,如果您具有 root 访问权限,则可以执行此操作。您可以尝试这个解决方案,作者解决了完全相同的问题。

你也可以试试https://github.com/alseambusher/adb-toggle

于 2015-10-25T09:07:19.747 回答
2

如果您的应用程序是系统应用程序,那么您只需执行此操作即可启用/禁用 USB 调试

Settings.Secure.putInt(getActivity().getContentResolver(),Settings.Secure.ADB_EN​​ABLED, 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)可以做到这一点。

于 2017-03-29T11:34:11.883 回答
0

除非您的应用是系统应用,否则您无法打开 USB 调试。

于 2013-08-17T05:41:17.417 回答
0

这行代码可能会有所帮助:

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

你需要这个权限:

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

但在清单中添加此权限后,您将收到此错误:权限仅授予系统应用程序

这意味着您的应用程序必须是系统应用程序

于 2014-11-25T06:47:44.123 回答