有没有办法以编程方式访问设备设置?
例如:设置 > 开发人员选项 > USB 调试 > True/False
提前致谢。
编辑:USB调试只是一个例子。我可以访问设备设置中存在的所有设置吗?
有没有办法以编程方式访问设备设置?
例如:设置 > 开发人员选项 > USB 调试 > True/False
提前致谢。
编辑:USB调试只是一个例子。我可以访问设备设置中存在的所有设置吗?
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(true)
但 ActivityManagerNative 隐藏在标准 api 集中。您将需要进行反射或使用此方法来获取 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>
最后看看这个例子
我知道这个问题很老但很有趣。
Nandeesh 的解决方案效果很好。但如果您想更改某些设置(例如 USB 调试),它就不起作用。您必须使用以下权限。
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
但是,它不适用于非系统应用程序。但是,如果您具有 root 访问权限,则可以执行此操作。您可以尝试这个解决方案,作者解决了完全相同的问题。
如果您的应用程序是系统应用程序,那么您只需执行此操作即可启用/禁用 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)可以做到这一点。
除非您的应用是系统应用,否则您无法打开 USB 调试。
这行代码可能会有所帮助:
Settings.Global.putInt(getContentResolver(), Global.ADB_ENABLED, 1);
你需要这个权限:
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
但在清单中添加此权限后,您将收到此错误:权限仅授予系统应用程序
这意味着您的应用程序必须是系统应用程序。