如何以编程方式访问设备设置?

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

例如:设置>开发人员选项> USBdebugging>真/假

提前致谢。

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

Solutions Collecting From Web of "如何以编程方式访问设备设置?"

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

但是你需要root权限才能做到这一点。 只有系统应用程序才有权更改安全设置

编辑:尝试这个显示所有的ANRs

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

并为不要保持活动

ActivityManagerNative.getDefault()。setAlwaysFinish(真)

但是ActivityManagerNative隐藏在标准的api集合中。 你将需要做reflection或使用此方法来获取android.jar。 再次我猜这需要root权限

试试:

  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

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

Nandeesh的解决scheme效果很好。 但是如果你想改变某些设置,例如USBdebugging,则不起作用。 您必须使用以下权限。

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

但是,它不适用于非系统应用程序。 但是, 如果您拥有root权限则可以这么做 。 你可以尝试这个解决scheme,作者解决完全相同的事情。

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

除非您的应用程序是系统应用程序,否则无法打开USBdebugging。

这行代码可能有助于:

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

你需要这个权限:

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

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

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

如果你的应用程序是系统应用程序,那么你只需要这样做来启用/禁用USBdebugging

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

您还需要root权限才能执行此操作。 我已经植根设备,我只是简单地执行SU来启用/禁用USBdebugging。

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

proc.waitFor();

Process proc2 = Runtime.getRuntime()。exec(new String [] {“su”,“-c”,“stop”,“adbd”});

proc2.waitFor();

好东西是你不需要把你的应用程序放在(/ system / priv-app /)你的简单的应用程序即(/数据/应用程序)可以做到这一点。