前几天写了一个关于实时获取短信的文章,后来想到以前写的一个有发短信功能的工程,想到其中的好处让我直流口水,今天就说说有关如何通过代码实现短信发送。
当时写完后测试,发现最大的好处就是短信发出去后,在发件箱中没有“迹象”;也就是说,只要用户咨询通信服务商,他是不会知道我们偷偷做了些什么……
(只是涉及权限了,于是乎,豌豆荚先生就会毫不留情的把你的程序牵扯到的权限,毫无保留的告诉用户……唉!)
PS:后来又写了一篇章关于发送短信存入发件箱的文章
文章链接:http://blog.csdn.net/etzmico/article/details/6916873
资源链接:http://download.csdn.net/detail/etzmico/3732601
下面来看看代码吧。
先展示下布局。
我大概画了一个短信发送页面,比较简陋,各位一笑而过即可……其中主要包含一个发送号码编辑窗口,一个发送内容编辑窗口以及一个发送按钮。
布局预览
接下来是功能实现部分代码
// 短信发送
SmsManager smsMgr = SmsManager.getDefault();
Intent i = new Intent("cn.etzmico.smssending");
PendingIntent dummyEvent = PendingIntent.getBroadcast(
SMSSending.this, 0, i, 0);
try {
smsMgr.sendTextMessage(telNumStr, null, messageStr,
dummyEvent, dummyEvent);
} catch (Exception e) {
Log.e("SmsSending", "SendException", e);
}
最后别忘了加权限
Manifest.xml
看看效果吧。
我用的是两台虚拟机掩饰的。
先说明下,有的初学者可能一直在迷惑,虚拟机窗口左上角的“代号”是什么。
我在这里解释下,那个其实就相当于虚拟机的号码,你的手机装上SIM卡啊UIM卡啊就可以拨打电话了,对吧?虚拟机也是,不过它不能打电话,但是发短信还是可以的。
我们来启动两步虚拟机,分别运行,目的是为了双向演示。
先让5554给5556发条信息。
分别输入短信接受号码和短信内容,最后点击发送按钮。
注意右边那台虚拟机的最上面,5556虚拟机已经接到短信了,不过5556那边显示的发送人的号码只是系统随虚拟机一起Creat出来的。
下面我们试试5556给5554发。
也成功了,很明显,发送人的号码和刚才不一样,也就是说,一台模拟器一个绑定了一个模拟号码。
关于短信发送的内容……OVER~
工程资源:http://download.csdn.net/detail/etzmico/3715837