Termux的简单应用,为了让群发短信有更便捷高效的解决方案。

前言

Termux是一个Android下一个高级的终端模拟器,开源且不需要root,支持apt管理软件包,十分方便安装软件包,完美支持Python、PHP、Ruby、Go、Nodejs、MySQL等。随着智能设备的普及和性能的不断提升,如今的手机、平板等的硬件标准已达到了初级桌面计算机的硬件标准,用心去打造完全可以把手机变成一个强大的工具。

关于软件的更多信息及基本配置,可以去看国光的教程,写得很赞很全面。

注意:由于谷歌的政策更新,Termux最新版本的API没有访问手机短信内容的权限,想要实现发送短信的功能,需要使用相对较久的0.31版本。在这里给Termux API 0.31版本下载地址,提取码:ttx1。API的安装方式在国光的文章中也有给出,不清楚可以去翻看。

在了解完Termux并安装好API后,我们的教程正式开始。

具体实现

虽然如今的QQ、微信已经承担了大部分我们的日常通信任务,但是总有一些情况需要电话短信来解决,比如给陌生人传达某些通知。电话是最优的解决方案,但是也会有一部分人倾向于短信。在经历了无数次的折磨之后,我终于发现了Termux

假设你现在有一个含有联系人姓名及电话号码的表格,将无用信息删除,只保留姓名和号码两列具体内容后,可以通过文件 -> 另存为 -> 文本文件(制表符分隔)的方式获得一个格式整齐的文本文档。将其重命名为data.txt,用记事本打开后选择另存为,在另存为界面调整保存编码为UTF-8,这步一定要做,不然程序无法正常读取文件。

将得到的文件用QQ或者TIM发送到你的手机并接受,按照国光的教程中建立好文件夹链接的前提下。以QQ为例,在终端中输入下面几行命令便可下载好程序。

cd ~/QQ
wget https://raw.githubusercontent.com/wanakiki/furry/master/termux-sms/messages.py

可以找到默认的信息语句对其进行修改,以达到我们的目的。修改完毕后执行python messages.py命令,运行程序。

python实现代码:

import sys
import os


def send_sms(aim, text):
    """use two argv to send messages
    """
    os.system('termux-sms-send -n ' + aim + ' ' + text)
    return


def fileMessage(fileName):
    """send messages form an excel(name, number)
    """

    print('start read file')
    try:
        fh = open(fileName, encoding='utf-8')
    except:
        print('Can\'t find the data file')
        return

    # create list (name, number)
    group = []
    for line in fh:
        line = line.split()
        group.append(line)
    fh.close()

    # send message
    words = " hello, this is termux"  # Replace it with your own words
    for people in group:
        send_sms(people[1], people[0] + words)

    print('finish')
    return


def sendOne():
    aim = input('Please input your aim number\n')
    words = input('Now you can input your message\n')

    print('+=======================+')
    print('Please check your input:')
    print('number: ', aim)
    print('words: ', words)
    flag = input(
        "Now, if your input is correct, input 'y' or 'Y' to send your message: ")
    if (flag == 'y' or flag == 'Y'):
        send_sms(aim, words)
    return


print("""Functions:
1 Only send one message.(Test this program)
2 Send messages form one file.
+============================================+""")

flag = input('Choose the function:')
if flag == '1':
    sendOne()
elif flag == '2':
    fileMessage('data.txt')

运行结果
运行结果