【发布时间】:2012-08-16 10:28:04
【问题描述】:
有没有办法以编程方式访问设备设置?
例如:设置>开发者选项>USB调试>真/假
提前致谢。
编辑:USB 调试只是一个例子。我可以访问设备设置中存在的所有设置吗?
【问题讨论】:
-
直接链接是here。
标签: android
有没有办法以编程方式访问设备设置?
例如:设置>开发者选项>USB调试>真/假
提前致谢。
编辑:USB 调试只是一个例子。我可以访问设备设置中存在的所有设置吗?
【问题讨论】:
标签: android
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 集中。您将需要进行反射或使用此method 来获取 android.jar。 我再次猜想这需要root访问权限
【讨论】:
Settings.Secure.putInt(getActivity().getContentResolver(),Settings.Secure.ADB_ENABLED, 1); 无法单独运行,因为您需要使用 Android 平台证书对您的应用进行签名,您的应用在 AndroidManifest.xml 中具有适当的配置,并且您的应用安装在 @987654324 中@ 以编程方式或手动方式。你甚至不能用有根设备来做到这一点。
试一试:
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>
最后看看这个例子
【讨论】:
AndroidManifest.xml 中具有相应的配置,并且您的应用安装在 /system/app 中以编程方式或手动方式。
我知道这个问题很老但很有趣。
Nandeesh 的解决方案效果很好。但如果您想更改某些设置(例如 USB 调试),它就不起作用。您必须使用以下权限。
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
但是,它不适用于非系统应用程序。但是,如果您有 root 访问权限,则可以这样做。您可以尝试this 解决方案,作者解决了完全相同的问题。
【讨论】:
如果您的应用是系统应用,那么您只需执行此操作即可启用/禁用 USB 调试
Settings.Secure.putInt(getActivity().getContentResolver(),Settings.Secure.ADB_ENABLED, 1);
您还需要 root 访问权限才能执行此操作。 我已经root了设备,我只是简单地执行SU来启用/禁用Usb调试。
进程 proc = Runtime.getRuntime().exec(new String [] { "su", "-c", "setprop", "persist.service.adb.enable", "0"});
proc.waitFor();
进程 proc2 = Runtime.getRuntime().exec(new String [] { "su", "-c", "停止", "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"/>
但在清单中添加此权限后,您会收到此错误:权限仅授予系统应用
这意味着您的应用必须是系统应用。
【讨论】: