如何用Java通过点击按钮来发送短信(附代码示例)

337 阅读6分钟

Twilio的宗旨是为通信提供动力,并以任何语言方便快捷地进行通信。

在Twilio和Java的帮助下,你不用拿起你的移动设备就可以向别人快速传递信息。使用Java也给你提供了创建图形用户界面(GUI)的有趣机会,以更有趣和互动的方式补充用户发送短信的经验。

在这篇文章中,你将实现一个小的按钮GUI,一旦按钮被点击,就会向你的移动电话设备发送一条短信。

配置

我们首先要创建一个目录来存储我们项目的文件。在你喜欢的终端里面,输入:

$ mkdir java_sms_button
$ cd java_sms_button

在这篇文章中,我们将下载独立的Twilio Java辅助库在这里下载一个预先建立的jar文件。在本文发表时,最新版本的jar文件twilio-8.18.0-with-dependencies.jar。 向下滚动下载该文件并保存到你的java_sms_button项目目录。

购买一个Twilio电话号码

如果你还没有这样做,购买一个Twilio号码来发送短信。

要这样做,请登录Twilio控制台,选择电话号码,然后点击红色加号,购买一个Twilio号码。注意,如果你使用的是免费账户,你将使用你的试用信用来购买。

购买号码界面,你可以选择你的国家,并在功能栏中勾选短信。如果你想申请你所在地区的号码,你可以在号码栏中输入你的区号。

Buy a phone number

点击搜索按钮,看看有哪些号码可用,然后点击 "购买",从结果中选择你喜欢的号码。在你确认你的购买后,点击关闭按钮。

创建一个按钮GUI

我们的目标是在GUI中建立一个可点击的按钮,这样用户就可以点击向一个手机号码发送短信。

在你的项目目录中建立一个名为SMSButton.java 的新文件,并粘贴以下代码来导入必要的包来处理事件:

import javax.swing.*;
import java.awt.event.*;

class SMSEventClicker implements ActionListener {
    JFrame frame=new JFrame();
    JButton button=new JButton("Click Me");
 
    SMSEventClicker() {
        createButtonGUI();
        buttonProperties();
    }
}

javax.swing包是AWT 包的新版本,它允许你开发GUI应用程序。该包对于利用为该项目创建按钮的组件是必要的。尽管没有直接使用AWT 包,但javax.swing 包需要java.awt.event包来处理来自按钮组件的事件。

一个名为SMSEventClicker 的类被创建,它实现了一个ActionListener 。还定义了该类的构造函数,以便在用户点击SMS按钮事件时可以使用GUI和按钮属性对象。

在编译这段代码之前,必须编写createButtonGUI()buttonProperties() 的函数。在类的构造函数下复制并粘贴以下代码:

    public void createButtonGUI(){
        frame.setTitle("Send an SMS");
        frame.getContentPane().setLayout(null);
        frame.setVisible(true);
        frame.setBounds(400,400,400,400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

这个函数利用了javax.swing 包中的JFrame类,以创建GUI窗口容器,该容器将弹出并容纳可点击的按钮。内容窗格的元素包括标题、可视性和确定宽度和高度的边界。通过使用setDefaultCloseOperation ,在用户关闭窗口后停止应用程序,结束该功能。

复制并粘贴以下代码,在按钮GUI函数的正下方定义buttonProperties 函数:

    public void buttonProperties(){
        button.setBounds(150,150,150,150);   
        frame.add(button);
        button.addActionListener(this);
    }

同样地,再次调用框架类来创建一个有边界的按钮。然而,这里重要的是,必须给这个按钮以具体的指示,让它做什么。我们的目标是让用户点击按钮,发射一条短信到一个电话号码。

覆盖按钮的点击动作

正如前面在SMSEventClicker 类定义中看到的,ActionListener 接口被实现了。这允许开发者确定当用户点击按钮时发生的动作,对ActionEvent

当用户点击组件时,一个叫做actionPerformed() 的方法被调用,因此,这个方法需要被重写,这样就可以实现新的指令来代替。

继续,通过复制和粘贴现有代码下的代码来覆盖该方法:

    @Override
    public void actionPerformed(ActionEvent e) {
        Message message = Message
            .creator(new PhoneNumber("+<YOUR_PHONE_NUMBER>"), // to 
                    new PhoneNumber("+<YOUR_TWILIO_NUMBER>"), // from
                    "Ahoy ahoy!")
            .create();
        System.out.println(message.getSid());
    }

用你的实际数字替换<YOUR_PHONE_NUMBER><YOUR_TWILIO_NUMBER> ,使用E.164的格式。

覆盖的方法点燃了Twilio REST API,以便从你的Twilio手机号码向你的个人电话号码发送短信。这是通过创建一个新的Message 资源的message 实例而实现的。消息发送后,消息的SID会打印在终端上供参考。

保存该文件。请随意添加这些功能,并随心所欲地改变GUI窗口容器的外观和按钮属性。

用Java和Twilio发送短信

为了完成代码并向一个电话号码发送短信,你必须用你的Twilio账户凭证配置环境,并在代码中引用它。

你可以在Twilio控制台找到你的账户凭证。

Twilio Account Credentials

如果你使用的是macOS或Linux,运行下面的命令,将你的账户凭证导出到twilio.env文件中。如果你决定提交这个项目目录,确保你不会意外地将你的凭证提交到公共仓库:

echo "export TWILIO_ACCOUNT_SID='ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'" > twilio.env
echo "export TWILIO_AUTH_TOKEN='<YOUR_AUTH_TOKEN>'" >> twilio.env
source ./twilio.env
echo "twilio.env" >> .gitignore

对于Windows开发者来说,你必须把export 替换为set ,如下图所示:

set TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
set TWILIO_AUTH_TOKEN='<YOUR_AUTH_TOKEN>'

为了方便起见,你也可以随意创建一个*.env.gitignore*文件。

回到SMSButton.java文件,通过创建一个反映文件名的新的公共类来检索环境变量。复制下面的类定义并粘贴在SMSEventClicker 类的定义下面:

public class SMSButton {
    public static final String ACCOUNT_SID = System.getenv("TWILIO_ACCOUNT_SID");
    public static final String AUTH_TOKEN = System.getenv("TWILIO_AUTH_TOKEN");
    public static void main(String[] args) {
        Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
        new SMSEventClicker();
    }
}

这个类对于检索系统环境变量和启动Twilio客户端是必要的,Twilio客户端将利用这些变量,以便成功发送短信。

为了结束这个类的定义,我们创建了一个SMSEventClicker 的对象。一旦代码被编译,JVM将开始执行Java程序,本文前面定义的所有GUI和按钮的定义将被调用。

完整的代码在我的GitHub资源库中,供你参考。

编译并运行Java程序

保存你的文件,并在终端键入这个命令来编译SMSButton 类:

javac -cp "twilio-8.8.0-jar-with-dependencies.jar" SMSButton.java 

如果你使用的是macOS或Linux,使用以下命令:

java -cp ".:twilio-8.8.0-jar-with-dependencies.jar" SMSButton

对于Windows开发者,使用下面的命令来激活你桌面上的GUI:

java -cp ".;twilio-8.8.0-jar-with-dependencies.jar" SMSButton

请注意,这两条命令的唯一区别是,Windows的命令使用分号代替。

稍等片刻,你会看到一个屏幕出现,标题是 "发送短信"。去吧,点击这个按钮

screenshot of GUI with button that says "Click Me"

点击按钮后,检查你的手机是否有短信。

screenshot of text message "Ahoy ahoy!"

用Java发送短信的下一步是什么?

恭喜你写了一个简短的Java程序,一旦用户点击了屏幕上的按钮,就会发送短信!你还可以做更多的事情。

利用Twilio和Java的许多包,你可以做的事情还有很多。也许你可以想出如何在Java中通过点击按钮来回复传入的短信