如何以编程方式禁用Android USB调试

时间:2011-04-06 10:27:06

标签: android debugging usb

某些三星Android手机有一个错误,如果插入USB,USB调试会自动打开。这显然是一个安全问题。我想编写一个程序来禁用USB调试,这样我就可以在插入usb-plug时启动它。 关于如何做到这一点的任何想法?

3 个答案:

答案 0 :(得分:5)

似乎不可能。我认为我必须将Settings.SystemADB_ENABLED一起使用,但ADB_ENABLED是一个安全系统设置,普通应用程序无法更改。 : - (

另一方面,有权限android.permission.WRITE_SECURE_SETTINGS,所以看起来我可以改变它。我可以在root手机上买到它吗?

如果有人知道如何解决这个安全问题,那就太好了。

答案 1 :(得分:1)

我不认为这是一个安全问题。

首先,开发人员有责任只提供不会在以后损害其应用程序的调试消息。

其次,用于开发的调试消息应该具有与生产相比的另一个调试级别。

第三,如果您的应用程序通过adb公开数据会破坏您的应用程序,那么应用程序设计可能在开始时出现了问题?

第四:不建议切换用户应该能够配置的设置。我不想通过启动应用程序来看到我配置的许多内容。当然,你提到了三星的Bug。但我认为他们应该能够解决这个问题。

问候,克里斯

答案 2 :(得分:0)

要实现这一点,您需要 android.permission.WRITE_SECURE_SETTINGS 权限。

无根:从 ABD 执行 adb shell pm grant <package-name> android.permission.WRITE_SECURE_SETTINGS

使用 root :Root 访问意味着我们可以在没有 adb 的情况下执行 shell 命令,因此解决方法:

        try {
            Runtime.getRuntime().exec(new String[]{"su","-c",String.format("pm grant %s android.permission.WRITE_SECURE_SETTINGS",BuildConfig.APPLICATION_ID)});
        } catch (IOException e) {
           // handle IOException
        }