通过暗码去打开/关闭usb debug开关
阅读原文时间:2023年07月09日阅读:1

通过暗码去打开/关闭usb debug开关

通过暗码去打开/关闭usb debug开关
1. Description
2. Analysis
3. Solution
4. Summary

通过在dialer输入暗码,打开/关闭usb debug开关。

其实这个功能本来在settings下面就有的,如果是正式版的设备需要连续点击几次版本号才能将usb debug开关显示出来,通过暗码来打开估计是为了更加方便后续的操作吧。

  1. 首先在dialer处进行逻辑判断,如果接收到的是usb debug开关的暗码,则发送对应的广播。在mtk自带的dialer就有相关的逻辑了,如handleSecretCode方法就会接收*#*#<code>#*#*格式的暗码,然后发送广播,其相关代码如下所示:

  2. 在广播接收器中进行对应的逻辑处理:

    usb debug的状态信息是存储在ContentProvider中的,对应的标识:

    只要将存储在ContentProvider的状态值拿出来,然后进行判断,如果为0则表示当前usb debug是关闭的,如果为1则表示当前usb debug是打开的。只需要将状态值取反后再存入ContentProvider就可以改变usb debug状态。

  • 添加USB接收器USBDebugBroadcastReceiver,具体代码如下:

  • 在对应的AndroidManifest.xml中为该接收器进行注册,具体如下:

这个问题相对简单,只要将期望的状态只存入对应的ContentProvider中就可与改变usb debug状态。之所以通过广播来处理,是因为与activity相比,通过intent启动指定activity组件时,如果没有找到合适的activity组件,会导致程序异常中止,但是通过intent启动BroadcastReceiver组件时不会有该问题出现。

null