捐血一袋救人一命

2024年12月12日 星期四

ADB Send Short Message

使用安卓手機搭配 ADB 發送簡訊

操作程序:

  1. 安裝 ADB 工具
  2. 手機設定啟用開發人員選項
  3. 手機啟用 USB 偵錯模式
  4. 使用 USB 線,將手機連接電腦,並在手機上允許電腦進行偵錯
  5. 開啟終端機視窗
  6. 執行發送命令程式
ADB shell am start -a android.intent.action.SENDTO -d sms:<TARGET_PHONE_NUMBER> --es sms_body "<SMS_CONTENT>" --ez exit_on_sent true

注意:

  • 網路上流傳的 keyevent 其實就是在移動一個看不見的鼠標,將鼠標移動到簡訊發送鈕上,再送出 keyevent 66 (Enter)
  • 這會因為手機品牌型號不同,簡訊程式發送鈕的位置佈局不同,甚至同一個目標門號有歷史紀錄,都導致 keyevent 執行的代碼與次數不同

解決方法:

  1. 手機操作到發送簡訊的畫面
  2. 終端機執行 ADB Dump UI 結構的指令
    adb shell uiautomator dump
    
  3. 將 UI 結構的 XML 檔案拉回電腦上
    adb pull /sdcard/window_dump.xml
    
  4. 從 XML 檔案中,找到發送鈕的資訊
  5. 改用 adb shell input tap 座標方式發送

以我的手機為例:

  1. Dump UI XML
adb shell uiautomator dump

输入图片说明
2. Pull File to Windows,檔案會存在當前目錄下

adb pull /sdcard/window_dump.xml

输入图片说明
3. 打開 XML 檔案,找到發送鈕的 resource-id,其中就包含左上右下的座標
输入图片说明
4. 計算一下大約要 tap 的座標

915 + (1047 - 915) / 2 = 981
2116 + (2180 - 2116) / 2 = 2148
  1. 執行點擊座標的程式
adb shell input tap 981 2148

備註:

  • XML 檔案包含簡訊應用程式的名稱,我的手機應用程式名稱是 com.google.android.apps.messaging

Reference:

0 意見: