环境: 手机RedMi Note 9 Pro 系统MIUI12
自带应用商店下载 QPython OP
在设置中要打开Qpython OP
的相关权限, 否则会空指针
QPython OP
使用手册
读取短信代码如下
一个简单示例
from android import Android
d = Android()
# 获取短信的数量
c = d.smsGetMessageCount(False) # False表示读取所有的短信 True表示读取未读
print("所有短信的数量", c)
# 获取短信ID
ids = d.smsGetMessageIds(False)
print("短信ids",ids)
完整代码
# 使用QPython读取手机短信并保存为csv
from androidhelper import Android
import csv
d = Android()
# 读取短信的具体内容, 默认读取收件箱内容
sms_data = d.smsGetMessages(False, "inbox")
#print(sms_data.result)
iflytek = []
for sms in sms_data.result:
# 只保存特定号码的短信
if sms['address'] == '106814830000148':
iflytek.append(sms)
names = ['_id', 'address', 'date', 'body', 'read', 'status', 'type']
with open('iflytek_sms.csv', 'w', newline='', encoding='gbk') as f:
f_csv = csv.DictWriter(f, names)
f_csv.writeheader()
f_csv.writerows(iflytek)
print('done')
names=['_id','address','date','body','read','person','status','type']
_id是每条短信的原始id,有些数字不连续,估计是因为部分短信被删除了
address就是对方手机号
date就是短信息的时间戳
body是短信具体内容
read表示已读未读,1为已读,估计0是未读。
person不知道是啥,收件箱sent时无该项。
status不知道是啥
type,发信息还是收信息,1为收,2为发
官方链接见下:
/en/guide_libraries.html#androidhelper-apis
QPython 文档
/read/readlist/rl321663