在安卓设备上,是否可能检测到USB调试?

14

在我的应用程序中,我需要一种方法来检测安卓设备是否运行在 USB 调试模式下。

这有可能吗?如果可以,怎么做呢?

谢谢提前。

2个回答

26

您可以使用以下方法获取ADB是否已启用。

int adb = Settings.Secure.getInt(context.getContentResolver(),  Settings.Global.ADB_ENABLED, 0);
如果启用了,adb == 1,否则adb == 0

0

在我的Android 2.3设备上,可以通过扫描完整的进程列表(ps -s)来检测USB调试模式,以便找到进程/sbin/adbd

如果该进程存在,则启用了USB调试模式。


这个能否在没有特殊权限(如android.permission.GET_TASKS)的情况下工作? - Android Developer
1
这在Android Nougat上无法工作。https://code.google.com/p/android/issues/detail?id=205565 - Jared Rummler
我可以看到至少在Pie中按照这里的说明时进程shell。不确定应用程序内部是否也会提供process s_tatus_,或者它是否仅适用于adb(因此对于该目的有点多余)。 - mirh
@mirh 自 Android 8 或 9 开始,应用程序无法看到除自己之外的任何其他进程。 - Robert
我明白了,我刚刚用“终端模拟器”进行了测试,基本上没有什么可以看到的了。不过我仍然想知道 Shizuku 的扩展权限(它是继 root 之后的第二好选择)是否仍然能让你看到更多东西。 - mirh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接