捐血一袋救人一命

江蘇拙政園

江蘇 拙政園

全家福

日本 和歌山城

賞楓之旅

千燈 夕照

水鄉千燈

蘆洲 微風運河

破曉時分

顯示具有 sms 標籤的文章。 顯示所有文章
顯示具有 sms 標籤的文章。 顯示所有文章

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: