工具:adb、python开发环境、安卓手机、macOS
首先安装python环境,安装terminal adb。
其中adb安装过程:
brew install android-platform-tools
检查adb的状态
adb devices
如果安装成功,检查设备的指令会列出当前设备。
因为安卓手机需要连接电脑且开启开发者模式,才会出现在设备列表,所以记得找到对应设备的厂商的开发这模式开启的方法。自行谷歌。
如果adb devices -l 列出的仍然空白,
终端输入
system_profiler SPUSBDataType
可以检查当前连接设备,搜索android,可以看到自己的手机
USB 3.1 Bus:Host Controller Driver: AppleIntelCNLUSBXHCIPCI Device ID: 0xa36d PCI Revision ID: 0x0010 PCI Vendor ID: 0x8086 SAMSUNG_Android:Product ID: 0x6860Vendor ID: 0x04e8 (Samsung Electronics Co., Ltd.)Version: 5.04Serial Number: R5CR11B1XDNSpeed: Up to 480 Mb/sManufacturer: SAMSUNGLocation ID: 0x14300000 / 8Current Available (mA): 500Current Required (mA): 0Extra Operating Current (mA): 0
记录下Vendor ID,到/Users/[user]/.android下,应该有一个adb_usb.ini文件,如果没有就创建,然后将Vender ID加入到文件中。(直接添加保存即可)
重启adb服务:
adb kill-server
adb start-server
重新输入adb devices来检查,看到设备在其中
eugene@Eugenes-MBP ~ % adb devices -l
List of devices attached
R5CR11B1XDN device usb:338690048X product:p3qzcx model:SM_G9980 device:p3q transport_id:2
这时候使用终端指令可以直接发送短信
adb shell am start -a android.intent.action.SENDTO -d sms:{} --es sms_body {}
其中{}用手机号和短信内容替换
即可调起手机短信功能停留在发送界面。
至此基本设置准备妥当。
使用到的Python库:
import os
import pandas as pd
import numpy as np
import time
遍历excel的方法:
df = pd.read_excel('file.xlsx')
for index,row in df.iterrows()://todo
调用adb shell方法:
//拼接发送指令
os.popen("adb shell am start -a android.intent.action.SENDTO -d sms:{} --es sms_body {}".format(mobile, sms_content))//给予机器缓冲时间
time.sleep(2)//模拟指令
os.popen("adb shell input keyevent 22")
最后实操需要大家调试一下,因为不同手机和设备在连接、设置、绑定、指令调用都有差异。
TIPS:因为有些手机品牌的短信界面有不同的按键,如我三星输入栏右侧是表情按钮,只需要调用两次右导航键,再回车发送即可。
脚本逻辑可以理解成用户操作的一个流程。
附带我的脚本调用:
adb shell am start -a android.intent.action.SENDTO -d sms:187xxxxxxxx --es sms_body "短信内容"
adb shell input keyevent 22
adb shell input keyevent 22
adb shell input keyevent 66
在整体脚本中可以调用home指令来穿插哦。
附:
部分adb shell指令
https://www.itread01.com/content/1548785710.html
部分adb shell指令
https://www.shuzhiduo.com/A/E35pgx3AJv/