10

是否可以在我的应用程序中以编程方式启用 USB 调试(在设置/应用程序/开发下)?

我正在查看http://developer.android.com/reference/android/provider/Settings.System.htmlPermission.WRITE_SETTINGS, 但我找不到任何合适的东西。

4

6 回答 6

14

您将需要 root 权限才能从应用程序执行此操作。

也就是说,可以通过执行以下终端命令来启用 ADB:

setprop persist.service.adb.enable 1
start adbd

这篇博文提供了一个很好的例子,说明如何通过su.

于 2012-04-03T10:40:06.547 回答
7

第一:你的应用必须是系统应用

这行代码可能会有所帮助:

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

你需要这个权限:

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

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

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

于 2014-11-25T05:51:35.783 回答
5

如果不使用您自己的自定义固件来授予对安全设置的访问权限,这是不可能的。在这里查看线程:http ://groups.google.com/group/android-developers/browse_frm/thread/953c6f0eb0fa9bed#

于 2010-08-13T14:40:40.000 回答
5

您可以通过在清单中请求 WRITE_SECURE_SETTINGS 并通过 adb shell 授予它来以编程方式启用 adb:

adb shell pm grant your.package.name android.permission.WRITE_SECURE_SETTINGS

然后,您可以通过调用在 API 17 及更高版本上启用 adb:

Settings.Global.putString(mContext.getContentResolver, Settings.Global.ADB_ENABLED,"1");

对于 API 16 到 API 3 调用:

Settings.Secure.putString(mContext.getContentResolver, Settings.Secure.ADB_ENABLED,"1");

要禁用 adb 在命令中将“1”替换为“0”

于 2018-07-12T16:36:01.640 回答
0

如果您的设备具有 root 权限,并且启用 adb 的 API 级别 > 17:

Runtime.getRuntime().exec(new String[] {"su", "-c", "settings put global adb_enabled 1"});

或(取决于 su 实现)

Runtime.getRuntime().exec(new String[] {"su", "settings put global adb_enabled 1"});

对于禁用 - 将最后一个参数从 1 更改为 0

于 2020-11-22T08:27:47.343 回答
0

你需要遵循这3个步骤

  1. 在清单中<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
  2. 在代码中使用此命令启用Settings.Secure.putInt(requireActivity().contentResolver, Settings.Global.ADB_ENABLED, 1)Settings.Secure.putInt(requireActivity().contentResolver, Settings.Global.ADB_ENABLED, 0)禁用USB 调试
  3. 重要在能够使用这些系统 API 之前,您必须从 adb running 授予 WRITE_SECURE_SETTINGS adb shell pm grant your.package.name android.permission.WRITE_SECURE_SETTINGS。设备必须连接到 USB 调试处于活动状态的计算机。

我开发了一个简单的应用程序,它使用这种方法来启用/禁用一些开发人员选项,例如调试 USB保持设备屏幕处于活动 状态 https://play.google.com/store/apps/details?id=it.stzan.devtools

免责声明:我是 DevTools 的实际开发者

于 2021-03-02T22:17:37.930 回答