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

时间:2012-08-16 10:28:05

标签: android

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

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

提前致谢。

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

6 个答案:

答案 0 :(得分:11)

  

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(真)

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

答案 1 :(得分:3)

尝试:

 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

答案 2 :(得分:3)

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

Nandeesh的解决方案效果很好。但是,如果要更改某些设置(如USB调试),则无效。您必须使用以下权限。

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

但是,它不能与非系统应用程序一起使用。但是,如果您具有root访问权限,则可能会执行此操作。您可以尝试this解决方案,其中作者解决了完全相同的问题。

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

答案 3 :(得分:1)

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

  

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

您还需要root权限才能执行此操作。 我已根设备,只需执行 SU 即可启用/禁用Usb调试。

  

进程proc = Runtime.getRuntime()。exec(new String [] {&#34; su&#34;,&#34; -c&#34;,   &#34; setprop&#34;,&#34; persist.service.adb.enable&#34;,&#34; 0&#34;});

     

proc.waitFor();

     

进程proc2 = Runtime.getRuntime()。exec(new String [] {&#34; su&#34;,&#34; -c&#34;,   &#34;停止&#34;,&#34; adbd&#34;});

     

proc2.waitFor();

好的是你需要将您的应用程序放在(/ system / priv-app /)中 您的简单应用即(/ data / app)可以执行此操作。

答案 4 :(得分:0)

除非您的应用系统应用,否则无法启用USB调试功能。

答案 5 :(得分:0)

这行代码可能有所帮助:

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

您需要此权限:

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

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

表示您的应用必须是系统应用