有没有办法以编程方式访问设备设置?
例如:设置>开发人员选项> USB调试>真/假
提前致谢。
编辑:USB调试只是一个例子。我是否可以访问设备中“设置”中存在的所有设置。
答案 0 :(得分:11)
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集中。您将需要进行反射或使用此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>
最后看一下这个例子
答案 2 :(得分:3)
我知道这个问题很老但很有趣。
Nandeesh的解决方案效果很好。但是,如果要更改某些设置(如USB调试),则无效。您必须使用以下权限。
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
但是,它不能与非系统应用程序一起使用。但是,如果您具有root访问权限,则可能会执行此操作。您可以尝试this解决方案,其中作者解决了完全相同的问题。
答案 3 :(得分:1)
如果您的应用是系统应用,那么您只需执行此操作即可启用/禁用USB调试
Settings.Secure.putInt(getActivity()。getContentResolver(),Settings.Secure.ADB_ENABLED, 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"/>
但在清单中添加此权限后,您将收到以下错误:权限仅授予系统应用
表示您的应用必须是系统应用。