作者:c_陈可儿 | 来源:互联网 | 2023-09-15 11:39
原文链接:http://www.xdbcb8.com/archives/2396.html
今天我试试来用Python发定时短信。实现这个功能需要借助安卓运行Python的神器QPython,这个我们之前介绍过的,忘记的小伙伴可以去看看相应的文章啦。
安卓运行Python的神器--QPython
这次我们使用的QPython3,这个版本发布于2017年12月28日,没错最新版就是这个。还有一个QPython,这个是支持Python2的,最新版本是2018年12月31日,实测发送短信不成功。
要实现本次功能,必须符合以下两个条件才行:
1、赋予QPython3两个权限:
发送短信、读取短信,如下图:
2、用到androidhelper这个库。
一些基本概念
androidhelper这个库在QPython IDE中简化了QPython SL4A开发,其中“hepler”类派生自包含SL4A Facade函数和API文档的默认Android类。
这里再把SL4A的概念普及一下,SL4A是Scripting Layer for Android 的缩写,中文直译为“安卓的脚本层”,与Android Scripting Environment(ASE)意义相同,据Google官方博客介绍,SL4A将脚本语言带入Android,允许用户编辑和执行脚本,直接在Android设备上运行交互式解释器。(来源:百度百科)
换句话说就是允许运行在安卓系统上的脚本语言,当然这里包括Python。
效果演示
看看视频:
https://www.bilibili.com/video/av49110191/
这里演示一下1分钟后给10086发送流量查询代码,具体的短信代码各地可能不同,可以问问当地的运营商。
我们收到的短信是这样的:
因为我们主要关心的是流量使用情况,所以其它部分就用正则表达式过滤掉了。
结果就变成这样了:
核心代码
def sendSms():
"""
发送短信
"""
d = Android()
# 创建一个安卓运用实例
d.smsSend("10086", "113")
# 给10086发送短信查询代码
time.sleep(5)
# 暂停5秒,给手机一个发送时间
sms_data=d.smsGetMessages(False, "inbox")
# 读取短信
latest_sms = sms_data.result[0]["body"]
# 取得短信内容
patterns = re.compile(r";已使用移动数据流量为(.*?);")
flow = re.findall(patterns, latest_sms)
# 只要流量部分
if flow:
# 要是匹配到表明查询成功,输出结果
ydFlow = flow[0]
print("已使用" + ydFlow)
更多的关于其API介绍,可以看看下面的网址:
androidhelper-apis
总结
我们实现了短信的发送、读取,其实只要你脑动大开,可以做很多嘿嘿嘿的事情,如果带上一个聊天机器人的API,可以实现短信和机器人聊天啊……
详细的代码,我已经上传到GitHub上了(欢迎Star)。关注公众号:学点编程吧,发送:短信,可以获得代码地址和对应QPython3安卓软件。