需求解讀
由於定製rom給用戶具體需求如下:
入工廠測試app自動打開adb調試模式,退出就關閉,防止客戶的用戶安裝其它應用(直接通過改變Settings.Global.ADB_ENABLED欄位)
打開usbdebug不提示彈出框
禁止調試圖標出現在通知狀態欄
過程分析
通過欄位關閉和開啟usb調試模式
通過開啟開發者模式最終發現開啟或者關閉是改變如下欄位:
Settings.Global.putInt(getContentResolver(),Settings.Global.ADB_ENABLED, 0);
打開USBdebug不彈框流程
當adb_enable為0時會關閉adb調試模式,為1是會有彈框提示點擊確認時會默認打開usb調試模式;通過代碼查找發現在frameworksaseservicesusbjavacomandroidserverusbUsbDeviceManager.java中監聽
發送消息handler消息
獲取消息,進入如下方法
調取mDebuggingManager.setAdbEnabled(mAdbEnabled);目前就以ENABLED為例
收到消息創建線程:
監聽
發送handler消息,得到相應的key
進一步調取
啟動對應的activity,標記為對應的activity報名和類名
修改frameworksasepackagesSystemUIsrccomandroidsystemuiusbUsbDebuggingActivity.java
屏蔽授權彈框
禁止通知狀態欄usb顯示
/device/rockchip/xxxx/system.prop 添加 欄位persist.adb.notify=0
實現完成
[火星人 ] enable開啟adb 調試 不提示對話框的流程分析已經有234次圍觀