-
发送短信
2012-09-18 16:28:21Android中短信主要采用SmsManager的sendTextMessage()方法来发送文字短信,sendTextMessage()方法有5个参数,第...第四个参数为PendingIntent对象,用于判断发送短信是否成功(可以为空),第五个参数也为PendingIntentAndroid中短信主要采用SmsManager的sendTextMessage()方法来发送文字短信,sendTextMessage()方法有5个参数,第一个参数为对方的手机号码(不能为空),第二个参数为发送方的手机号号码(可以为空),第三个参数为发送的短信内容(不能为空),第四个参数为PendingIntent对象,用于判断发送短信是否成功(可以为空),第五个参数也为PendingIntent对象,当用户接收到短信时会返回该对象(可以为空)。
现在新建一个名为Sample15的Android项目,在main.xml中添加一个TextView、两个EditText和一个Button。其中一个EditText用于输入电话号码,另外一个EditText用于输入发送的短信内容,Button按钮用于发送短信,同时设置EditText的inputType属性为phone,即EditText只能输入电话号码。如下图所示:
然后在Sample15Activity.java中为按钮添加单击事件,当点击按钮时向指定号码发送短信内容。Sample15Activity.java中的代码如下:
publicclass Sample15Activity extends Activity {
/** Called when the activity is first created. */
@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ButtonsendButton=(Button)findViewById(R.id.sendbutton);//发送短信按钮
sendButton.setOnClickListener(new OnClickListener(){
@Override
publicvoid onClick(View v) {
// TODO Auto-generated method stub
EditTextphoneText=(EditText)findViewById(R.id.phoneNumEditText);//电话号码
EditTextmsgText=(EditText)findViewById(R.id.msgEditText);//短信内容
StringphoneNum=phoneText.getText().toString();//获取发送到的电话号码
Stringmsg=msgText.getText().toString();//获取发送的短信内容
SmsManagersmsManager=SmsManager.getDefault();//获取默认的SMS管理器
smsManager.sendTextMessage(phoneNum,null, msg, null, null);//发送文本短信
msgText.setText("");//设置短信输入框内容为空
}});
}
}
最后,还需要在AndroidManifest.xml中manifest节下添加可以发送短信的用户许可,如下:
<uses-permission android:name="android.permission.SEND_SMS"/>
运行程序,在两个模拟机上运行结果如下图所示:
-
安卓短信功能全解:调用系统短信功能发送短信、彩信,使用SmsManager发送短信,并监听发送短信的投递情况,...
2017-10-22 09:55:25安卓短信功能全解:调用系统短信功能发送短信、彩信,使用SmsManager发送短信,并监听发送短信的投递情况,使用广播接收器监听接收的短信。首先需要添加短信功能的权限 <uses-permission android:全栈工程师开发手册 (作者:栾鹏)
安卓教程全解安卓短信功能全解:调用系统短信功能发送短信、彩信,使用SmsManager发送短信,并监听发送短信的投递情况,使用广播接收器监听接收的短信。
首先需要添加短信功能的权限
<uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="android.permission.RECEIVE_SMS"/>
调用系统短信功能发送短信
注意:由于目前手机多存在双卡双待、网络短信,所以还需要选择发送的卡,因此这里只会启动系统短信发送界面,还没有自动发送
调用发送函数 send_message("12345678911","这是代码发送的一条短信"); 短信发送函数 private void send_message(String number,String message) { //使用系统短信服务栈发送短信 Intent smsintent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:"+number)); smsintent.putExtra("sms_body",message); startActivity(smsintent); //由于目前手机多存在双卡双待、网络短信,所以还需要选择发送的卡,因此这里只会启动系统短信发送界面,还没有自动发送 }
调用系统彩信功能发送媒体信息(彩信,邮件)
调用发送函数 send_mulmessage("12345678911","这是代码发送的一条彩信"); 彩信发送函数 private void send_mulmessage(String number,String message) { //获得要附加的一个媒体的uri Uri attached_Uri=Uri.parse("content://media/external/images/media/1"); //创建一个新的MMS intent Intent mmsIntent=new Intent(Intent.ACTION_SEND,attached_Uri); mmsIntent.putExtra("sms_body", message); mmsIntent.putExtra("address", number); mmsIntent.putExtra(Intent.EXTRA_STREAM, attached_Uri); mmsIntent.setType("image/jpeg"); startActivity(mmsIntent); }
使用SmsManager 发送sms短信信息
使用SmsManager短信管理器发送短信,不会启动系统短信发送界面,但是由于短信在发送成功、失败、接收者接收成功、失败、是否已读等消息,安卓系统都会通过广播形式向系统所有app进行广播,所以仍然会在系统自带短信功能中留下痕迹。
在使用SmsManager发送短信时,需要自定义短信发送广播接收事件、短信送达广播接收事件。另外要注意将短信按运营商的限制长度进行分割。
由于目前手机多存在双卡双待、网络短信,所以还需要选择发送的卡,这种自动发送的短信,没法选择发送模式,所以会存在发送失败的情况
调用发送函数 sendsms("12345678911","这是代码发送的一条短信"); 短信发送函数 private void sendsms(String number,String message) { //获取短信管理器 android.telephony.SmsManager smsManager = android.telephony.SmsManager.getDefault(); String sent_sms_action = "com.lp.app.send_sms_action"; //短信发送成功(只是一个名称) String delivered_sms_action ="com.lp.app.delivered_sms_action"; //短信送达成功(只是一个名称) //创建sentintent参数 Intent sentIntent = new Intent(sent_sms_action); PendingIntent sendpi =PendingIntent.getBroadcast(getApplicationContext(), 0, sentIntent, PendingIntent.FLAG_UPDATE_CURRENT); //创建deliveryintent参数 Intent deliveryIntent=new Intent(delivered_sms_action); PendingIntent deliverpi = PendingIntent.getBroadcast(getApplicationContext(), 0, deliveryIntent, PendingIntent.FLAG_UPDATE_CURRENT); //注册broadcast receiver,用于在消息发生成功或者失败时触发 registerReceiver(new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { String resulttext = "unknown"; switch (getResultCode()) { case Activity.RESULT_OK:resulttext="发送成功";break; case android.telephony.SmsManager.RESULT_ERROR_GENERIC_FAILURE:resulttext="发送失败";break; case android.telephony.SmsManager.RESULT_ERROR_RADIO_OFF:resulttext="发送失败,无线处于关闭状态";break; case android.telephony.SmsManager.RESULT_ERROR_NULL_PDU:resulttext="发送失败,没有指定的PDU";break; case android.telephony.SmsManager.RESULT_ERROR_NO_SERVICE:resulttext="发送失败,无服务";break; default:break; } Log.v("发送的短信", resulttext); } }, new IntentFilter(sent_sms_action)); //用指定名称的事件来触发这个接收机 //注册broadcast receiver,用于仅在接收人接收到sms消息后触发 registerReceiver(new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { String resulttext = "unknown"; switch (getResultCode()) { case android.telephony.SmsManager.STATUS_ON_ICC_FREE:resulttext="自由空间";break; case android.telephony.SmsManager.STATUS_ON_ICC_READ:resulttext="接收且已读";break; case android.telephony.SmsManager.STATUS_ON_ICC_SENT:resulttext="存储且已发送";break; case android.telephony.SmsManager.STATUS_ON_ICC_UNREAD:resulttext="接收但未读";break; case android.telephony.SmsManager.STATUS_ON_ICC_UNSENT:resulttext="存储但未发送";break; default:break; } Log.v("发送的短信", resulttext); } }, new IntentFilter(delivered_sms_action)); //用指定名称的事件来触发这个接收机 //拆分短信内容(手机短信长度限制) List<String> divideContents = smsManager.divideMessage(message); for (String text : divideContents) { //由于目前手机多存在双卡双待、网络短信,所以还需要选择发送的卡,这种自动发送的短信,没法选择发送模式,所以会存在发送失败的情况 smsManager.sendTextMessage(number, null, text, sendpi, deliverpi); //参数:接收人,所有用的SMS服务中心,消息内容,跟踪传输的intent,消息成功递送的intent //smsManager.sendDataMessage(destinationAddress, scAddress, destinationPort, data, sentIntent, deliveryIntent); //发送byte[] //smsManager.sendMultipartTextMessage(destinationAddress, scAddress, parts, sentIntents, deliveryIntents); //发送多部分字符串内容 }
广播监听接收到的短信
在系统接收到短信后,系统会全局广播一个事件,事件中附加了短信的全部内容信息,我们可以通过注册广播接收来获取短信内容和相关信息。
1、首先在manifest中注册一个广播接收
<!-- 短信接收监视--> <receiver android:name="com.lp.app.advice.SMSReceiver" > <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver>
2、自定义广播接收器,解析接收到的短信
import android.content.Intent; import android.os.Bundle; import android.content.BroadcastReceiver; import android.content.Context; import android.util.Log; //使用intent receiver监视接收的短信 public class SMSReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle bundle=intent.getExtras(); if (bundle!=null) { Object[] pdus = (Object[])bundle.get("pdus"); //pdus是一个object类型的数组,每一个object都是一个byte[]字节数组,每一项为一条短信。 android.telephony.SmsMessage[] messages = new android.telephony.SmsMessage[pdus.length]; for (int i = 0; i < pdus.length; i++) messages[i]=android.telephony.SmsMessage.createFromPdu((byte[])pdus[i]); for(android.telephony.SmsMessage message: messages){ String msg = message.getMessageBody(); //获取消息内容 long when = message.getTimestampMillis(); //获取消息时间戳 String from =message.getOriginatingAddress(); //获取消息来源 Log.v("接收到的短息", "消息:"+msg); Log.v("接收到的短息", "时间:"+when); Log.v("接收到的短息", "发件人:"+from); } } } }
-
使用HttpClient发送短信
2018-12-27 18:05:01没有阿里云短信账号的同学可以选择httpClient方式发送短信 一、注册账号 去中国网建 注册一个账号,或者去其他短信网站注册。注册成功后会赠送5条短信,在修改用户信息里填写你的短信签名,发送短信时格式如下: ...没有阿里云短信账号的同学可以选择httpClient方式发送短信
一、注册账号
去中国网建 注册一个账号,或者去其他短信网站注册。注册成功后会赠送5条短信,在修改用户信息里填写你的短信签名,发送短信时格式如下:
【短信签名】 短信内容
点击修改短信秘钥,可查看你的短信秘钥,短信接口中需要填写此信息,勿泄露,如图:
二、下载jar包
点击短信API接口,跳转至接口介绍页面,有各种语言发送短信的案例
在 3.JAVA调用案例下面下载jar包
三、java发送短信代码
public static void sendMsg(String phone,String text) throws IOException { HttpClient client = new HttpClient(); PostMethod post = new PostMethod("http://gbk.api.smschinese.cn"); post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");//在头文件中设置转码 NameValuePair[] data ={ new NameValuePair("Uid", "你的登录名"),new NameValuePair("Key", "你的短信秘钥"),new NameValuePair("smsMob",phone),new NameValuePair("smsText",text)}; post.setRequestBody(data); client.executeMethod(post); Header[] headers = post.getResponseHeaders(); int statusCode = post.getStatusCode(); System.out.println("statusCode:"+statusCode); for(Header h : headers) { System.out.println(h.toString()); } String result = new String(post.getResponseBodyAsString().getBytes("gbk")); System.out.println("打印返回消息状态:"+result); //打印返回消息状态 post.releaseConnection(); }
main函数发送短信测试
public static void main(String[] args) { try { sendMsg("176xxxxxxxx","登录验证码为:"+800632); } catch (IOException e) { e.printStackTrace(); } }
关注我的微信公众号获取更多资源
-
java实现发送短信验证码功能
2015-04-17 19:44:36使用的是信易通的短信平台接口,然后在Java中使用HttpClient模拟POST请求或者GET请求(看短信平台要求,一般的情况下都是POST请求),调用短信平台提供的接口(遵循短信平台的接口规范即可)发送短信验证码 -
Java发送短信
2019-06-11 08:20:207、发送短信: 8、注意事项: 1、网上注册用户: 在中国网建中注册用户,本程序是通过中国网建提供的SMS短信平台实现的,该平台新用户注册可以拥有免费5条普通短信和3条彩信,足够进行尝试和体验了。 2、修改...目录
1、网上注册用户:
在中国网建中注册用户,本程序是通过中国网建提供的SMS短信平台实现的,该平台新用户注册可以拥有免费5条普通短信和3条彩信,足够进行尝试和体验了。
2、修改短信签名:
注册成功后登陆,用户登陆有首先要修改短信签名,因为中国网建中规定了,发送的短信如果没有正规的签名是不能成功发送的。
修改短信签名的步骤:用户信息修改--->修改用户信息--->保存信息,如下图:
3、修改验证码网关和绑定短信模板:
如果开发的短信是为了发送验证码、订单号等需要让用户快速收到短信时,可以联系中国网建的客服(QQ联系即可,方便、快捷),修改验证码网关和绑定短信模板,短信模板中的变量用x进行代替,详情可以咨询中国网建的客服人员,这样就可以实现短信秒到用户手机中去。
非常注意:绑定了短信模板后,只有发送短信的内容与绑定的短信模板一模一样(模板中的变量每次发送具体实例化即可)才能够实现短信的秒到,如果不一样的话,短信收到的时间将会变长。
4、引入jar包:
5、编写发短信代码:
package www.email.com.SendMessage; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.methods.PostMethod; public class SendMessage { public static void main(String[] args) throws Exception { HttpClient client = new HttpClient(); PostMethod post = new PostMethod("http://gbk.api.smschinese.cn"); post.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=gbk");// 在头文件中设置转码 NameValuePair[] data = { new NameValuePair("Uid", "用户名"),//中国网建sms平台注册的用户名 new NameValuePair("Key", "用户秘钥"),//中国网建sms平台注册的用户密钥 new NameValuePair("smsMob", "手机号"),//将要发送到的手机号码 new NameValuePair("smsText", "按照短信模板发送内容,短信模板中变量具体化即可") };//要发送的短信内容 post.setRequestBody(data); client.executeMethod(post); Header[] headers = post.getResponseHeaders(); int statusCode = post.getStatusCode(); System.out.println("statusCode:" + statusCode); for (Header h : headers) { System.out.println(h.toString()); } String result = new String(post.getResponseBodyAsString().getBytes( "gbk")); System.out.println(result); // 打印返回消息状态 post.releaseConnection(); } }
6、查看用户秘钥:
查看用户秘钥的步骤:修改短信秘钥--->短信秘钥,如下图:
7、发送短信:
通过运行编写的java代码,即可实现发送短信的功能,并且让短信能够秒到用户手机中去;
8、注意事项:
(1)必须要设置短信签名:因为中国网建规定,如果没有设置短信签名的短信是不能够成功发送的。
(2)如果要实现短信的秒到功能,就要修改验证码网关和绑定短信模板,并且发送短信的内容只有和绑定的短信模板一模一样的时候(模板中的变量每次发送具体实例化即可,其余内容必须一模一样),才能够实现短信的秒到,否则发送的短信不能实现秒到,只能和普通短信一样到达用户手机上比较慢。
-
android 实现发送短信功能
2019-07-04 11:09:05在学习的视频里面发现了这个发送短信的功能实现 就好奇写了一个小demo 先看一下页面的效果吧 很简单的布局 两个输入框 一个按钮 看一下具体的实现效果emmmm 模拟器上看不出来效果 骚等.... 点击发送短信 提示... -
SpringBoot集成腾讯云短信服务发送短信
2020-02-21 07:36:09所以接下来就把发送短信的具体实现过程记录下来,既是为了自己以后查阅方便,也是想分享给大家,如果有什么不足的地方欢迎大家不吝指出。 这里我使用的是腾讯云提供的短信服务,使用该服务之前我们需要完成认证,有... -
python:发送短信
2018-06-16 19:23:56发送短信 发送短信也是项目中常见的功能,网站的注册码、验证码、营销信息基本上都是通过短信来发送给用户的。在下面的代码中我们使用了互亿无线短信平台(该平台为注册用户提供了50条免费短信以及常用开发语言发送... -
php短信系统,业务发送短信,ETL发送,自定义发送
2016-11-09 15:18:34业务中发送短信:在完成订单后给用户发送短信提示。 ETL发送:通过一些数据分析需求,给一些筛选出的用户发送特定的短信(例:在订单快要过期的前两天发送提示短信。) 自定义发送:提供使用页面,上传需要发送的... -
PERL短信脚本发送短信?
2015-08-15 03:26:12我想知道,用perl脚本调用短信接口发送短信,之后如何让把接口返回码和数据一起写入到oracle数据库中,存放在一张表中,脚本该怎么写啊? -
使用阿里云的短信服务发送短信
2019-04-11 00:02:00原文地址使用阿里云的短信服务发送短信 在给客户开发一个信息发送功能的时候,需要涉及到短信的发送,短信发送一般不同的厂商提供的接口不同,处理方式也不太一样,之前用的一个厂商的,提供了一个封装类就很容易... -
java调用短信接口实现发送短信
2020-06-22 22:10:45java调用短信接口实现发送短信1.下载接口文件2.打开java文件夹2.1获取jar包依赖2.2获取代码模板3.创建项目3.1打开eclipse软件,创建一个动态的web项目3.2导入jar包依赖3.3创建包导入所需工具类4.创建账户4.1账户状态... -
Java 发送短信验证码
2018-08-27 17:10:23Java 发送短信验证码给手机 发送短信验证码其实很简单,就是调用一下第三方的短信API接口,填写参数,发送请求,第三方平台会将信息发送给对方手机当中 介绍 我个人测试所使用的第三方API是“秒嘀”,理由是因为... -
python自动发送短信验证码、短信通知、营销短信、语音短信
2020-02-25 11:25:45发送手机号码通知或者短信,我们可以通过平台来自动批量的发送短信。 需要先在平台上面完成身份认证、签名认证、信息内容报备,平台审核通过后才可以使用。 测试 下面是以"秒赛科技"来进行测试,之前有试过阿里云,... -
smgp3.0发送短信不稳定
2019-05-23 10:16:10smgp3.0发送短信,短信过长需要拆分,短信拆分后存在部分发送不成功的情况;比如一条内容被拆分成四条短信进行发送,但是收到其中的哪几条是不稳定的。求助该如何解决? -
java实现发送短信
2018-01-19 16:23:08java实现发送短信(本章调用阿里云API) 地址如下 https://market.aliyun.com/products/56928004/cmapi022659.html?spm=5176.2020520132.101.5.TsClbR#sku=yuncode16659000011 进入控制台得到AppCode 告诉商家... -
关于java调用webservice调用短信接口发送短信
2016-10-26 07:56:34java调用webservice调用短信接口发送短信 本人现在有个功能是发送短信验证码,第三方只给了一个url,领导说利用web service调用短信接口就好了 求助一下 具体实现的思路和技术点 -
android调用系统发送短信 和 已发送短信界面
2014-05-17 16:30:421. 调用系统发送短信界面(并指定短信接收人和短信内容) Uri smsToUri = Uri.parse("smsto:10086"); Intent mIntent = new Intent(android.content.Intent.ACTION_SENDTO, smsToUri ); mIntent.... -
java发送短信
2014-12-04 15:49:43在一些网站上需要实现给用户手机发送短信,看起来似乎很难实现,其实不然,表面复杂的技术,当你弄明白原理之后就变成了不是问题的问题......不多说,直接看代码 1.原理:给用户发送短信主要是通过移动提供给的... -
Java实现发送手机验证码,发送短信
2019-09-28 12:40:22要发送短信,我们需要第三方提供的短信接口,这里我使用阿里云的短信服务。 首先进入阿里云的官网,然后注册。登陆之后选择云通信——》短信服务 然后点击免费开通。 开通后进入控制中心,选择右上方的支持与服务... -
Java SDK发送短信验证码
2018-06-15 17:33:35上次记录了如何发送邮件,其实发送短信和发送邮件差不多。只不过发邮件是不收费的,发短信是要收费的。 这次就来说说怎么样发送短信验证码。 ▍实验条件 首先说明一下这篇文章所介绍的发送短信过程中... -
Android接收和发送短信
2016-08-21 22:31:20每一部手机都具有短信接收和发送功能,下面我们通过代码来实现接收和发送短信功能。 一、接收短信1、创建内部广播接收器类,接收系统发出的短信广播 2、从获得的内容中解析出短信发送者和短信内容 3、在Activity中... -
Android发送短信验证码
2015-10-31 22:39:38Android发送短信验证码 -
Android 双卡发送短信
2016-03-29 17:05:13Adnroid双卡手机发送短信 -
如何发送短信验证码
2018-07-08 21:07:03如何发送短信验证码短信验证码是一种有效的验证方式,它可以大大的增加网站和APP的安全性,防止用户恶意注册,其工作原理就是,用户在注册框,输入自己的手机号码,点击获取短信验证码,然后网站后台和APP后台生产... -
App内发送短信
2017-12-12 14:53:48App 内发送短信是不用跳出App利用手机系统的发短信页面直接在本App内就可以发送短信的功能。本功能在 iOS4.0 的时被引入进来,主要是使用 #import 头文件下的 MFMessageComposeViewController 类。 第... -
webservice发送短信本地部署可以但是服务器部署发送短信息中文乱码
2019-03-29 09:10:05开始以为是tomcat的原因 毕竟本地运行tomcat是可以的,不断百度这个方向。后面经经理提点 短信接口都是post...至于解决方式目前只是把发送短信的内容转移到java代码中,可自行放数据库 或者配置文件中。 ... -
android批量发送短信
2017-01-12 12:43:03快过年了,自己写了个android批量发送短信,短信前面添加人名,用来节日发短信,这样别人就不知道我是批量发送的了哈哈哈,当然写的很菜,刚开始玩这个敬请指教 短信发送后去短信列表查看 首先... -
iOS中发送短信
2019-06-20 18:38:11在开发过程中,有时会需要调用原生的发送短信功能,用来实现自己应用中的一些业务处理流程,对此,官方开放了两个API可以供开发者调用 OpenURL方式 首先,最简单的方式是调用OpenURL,代码如下: [[UIApplication ...
-
自动机:用于Arduino的React式状态机框架-源码
-
9种HTML中通过CSS方式隐藏元素的方法
-
FLstudio_20.0.3官方版本.exe全能音乐制作软件
-
MvvmCross:用于跨平台解决方案的.NET MVVM框架,包括Xamarin.iOS,Xamarin.Android,Windows和Mac-源码
-
DmxSerial2:一个用于发送和接收DMX RDM数据包的Arduino库-源码
-
怎么做才能在知识付费领域脱颖而出?做好以下几步离成功不远了
-
基于Django的电子商务网站设计---第四章 模型和数据库
-
旅游数据管理系统vbnet+sql
-
AI-人脸口罩识别特训营
-
CalypsoBot:使用discord.js构建的完全可自定义的bot-源码
-
python tesseract selenium自动识别验证码登陆
-
最差劲的SSM
-
Solr8.7.0 Java Mysql Centos开发在线答题系统
-
2021 租车小程序 毕业设计 毕设 源码 源代码
-
day4-1攻防世界-red_green
-
Rust能力养成之(10)用Cargo进行项目管理:扩展 调用与优化
-
LeetCode题解(0785):判断二分图(Python)
-
jsp+servlet+mysql实现的在线鲜花商城源码
-
3.JavaScript技术
-
Spring Boot2.X仿朋友圈PC版系统实战_架构1.0