Qt & Java 实现短信群发功能 从搭建环境到功能实现

首先声明 没有博主的允许不得转载

这个功能是我做windows项目其中的一部分功能,感觉Qt短信群发功能在网上用例比较少,需求的人也很多,故而写下此技术博客希望Qt开发的人员有所帮助。
Qt在实现短信群发功能有诸多不便,所以发短信的主要功能是在Java中完成,相信大多数人都认为,我可能使用的QAndroidJniObject实现,但是很遗憾Qt提供的这项技术只能用在Qt for Android中,所以我使用QProcess实现执行批处理文件达到运行java程序的目的。虽然这种方法可能很low,但是解决了我在项目中开发此功能的难题,好了闲话少说,我们直奔主题。
我所用的开发环境:

 1.windows 7
 2.qt-opensource-windows-x86-mingw491_opengl-5.4.1.exe
 3.MS Access 2007 + Access驱动
 4.JDK1.8

环境配置我主要说明一下Qt链接Access需要做的工作,你可能在实现的时候没有遇到这么多问题,那么你可以直接略过,首先去微软官网下载Access的驱动,Office套件中不带着驱动,安装后,具体设置如下:系统控制面板-->系统和功能-->管理工具,在其中设置数据源配置项,可以直接使用当前用户默认的MS Access Database,在其中选择你的数据库文件,最好是.mdb为后缀Access的文件,保存你的选择,以下是数据库链接实例代码:

 QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
 db.setDatabaseName("Driver={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access Database};DBQ=C:/Users/Mrzhang/Database2.mdb"); //路径换成你自己的
     bool b = db.open();
     if(b){
     //你要执行的语句
     }
     else{
     //打印输出提示错误
     }
 

实现从数据库中读取数据的时候,就要去实现发短信的功能了,发短信是避不开运营商的,所以不要妄想自己程序完全实现,除非你会自己搭建伪基站,这里使用的发短信的接口是sms提供的java发短信的接口(详细信息见官网:http://sms.webchinese.com.cn/...,你会发现Java实现发短信竟然如此简单,那接下来我们来解决Qt调用java的问题,在你的电脑上装有JDk环境的条件下,你可以测试一下,这段代码(执行你的java代码,并抽取java的控制台输出信息,当然不仅仅是java代码,其他的皆可,只要你尝试):

QProcess p(0);
p.start("cmd", QStringList()<<"/c"<<"java MyHelloWord");//你需要把你的可执行文件放到项目运行目录下
p.waitForStarted();
p.waitForFinished();
QString strTemp=QString::fromLocal8Bit(p.readAllStandardOutput());
QMessageBox testMassage;
testMassage.setText(strTemp);
testMassage.exec();

在这里值得一提的是sms提供的接口需要导入第三方jar包,jar包下载地址,官网已经提供这里不再列出,这三个包最好也放到Qt目录,如果你有自己的想法那么尽情去测试,如果你测试用Qt调用你自己的java程序成功后,那么就到了编译官方提供的程序实例了,eclipse下编译比较简单,这里在说一下在命令行中如何编译依赖第三方jar包的程序:
图片描述
以这样的方式把所有的jar包导入然后直接编译java程序,这里有必要再说一下,运营商提供的第三方jar包不仅在编译的时候需要在运行的时候也是需要的,所以在bat文件中应该这么写:

echo off
set FILE_HOME=C:\Qtfile\build-untitled-Desktop_Qt_5_4_1_MinGW_32bit-Debug\test  //这个目录要改成你自己的
set CLASS_PATH=.;%FILE_HOME%/commons-logging-1.1.1.jar;%FILE_HOME%/commons-codec-1.4.jar;%FILE_HOME%/commons-httpclient-3.1.jar
java -cp %CLASS_PATH% -Dcatalina.home="%FILE_HOME%" MainTest2

然后 Qt代码这样写:

 p.start("cmd", QStringList()<<"/c"<<"test.bat");

在这里你可以看见我放jar包的位置,为了少出错你最好效仿我,好了这里已经能运行SMS java程序了,接下来讨论一下我实现Qt和Java传递数据的方法,Qt创建临时文件并写入电话和要发送的信息,java从中读取信息,最好用缓冲流读取

   BufferedReader bd = new BufferedReader(new InputStreamReader(new FileInputStream("你的文件名称")));

用readLine方法读取,简单粗暴,只需要少量的字符串处理你就可以往接口中传入数据了。
到此完美解决Qt桌面平台调用Java程序完成核心功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值