精华内容
下载资源
问答
  • 发送短信

    2012-09-18 16:28:21
    Android中短信主要采用SmsManager的sendTextMessage()方法来发送文字短信,sendTextMessage()方法有5个参数,第...第四个参数为PendingIntent对象,用于判断发送短信是否成功(可以为空),第五个参数也为PendingIntent

    Android中短信主要采用SmsManagersendTextMessage()方法来发送文字短信,sendTextMessage()方法有5个参数,第一个参数为对方的手机号码(不能为空),第二个参数为发送方的手机号号码(可以为空),第三个参数为发送的短信内容(不能为空),第四个参数为PendingIntent对象,用于判断发送短信是否成功(可以为空),第五个参数也为PendingIntent对象,当用户接收到短信时会返回该对象(可以为空)。

    现在新建一个名为Sample15Android项目,在main.xml中添加一个TextView、两个EditText和一个Button。其中一个EditText用于输入电话号码,另外一个EditText用于输入发送的短信内容,Button按钮用于发送短信,同时设置EditTextinputType属性为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.xmlmanifest节下添加可以发送短信的用户许可,如下:

        <uses-permission android:name="android.permission.SEND_SMS"/>

    运行程序,在两个模拟机上运行结果如下图所示:



    展开全文
  • 安卓短信功能全解:调用系统短信功能发送短信、彩信,使用SmsManager发送短信,并监听发送短信的投递情况,使用广播接收器监听接收的短信。首先需要添加短信功能的权限 <uses-permission android:
    
        ad1.jpg
    

    全栈工程师开发手册 (作者:栾鹏)
    安卓教程全解

    安卓短信功能全解:调用系统短信功能发送短信、彩信,使用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条短信,在修改用户信息里填写你的短信签名,发送短信时格式如下:

    【短信签名】 短信内容
    

    enter image description here

    点击修改短信秘钥,可查看你的短信秘钥,短信接口中需要填写此信息,勿泄露,如图:

    enter image description here

    二、下载jar包

    点击短信API接口,跳转至接口介绍页面,有各种语言发送短信的案例

    enter image description here

    3.JAVA调用案例下面下载jar包

    enter image description here

    三、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();
        }
    }

     

    访问我的达人课

    访问我的博客 Wang's Blog

    关注我的微信公众号获取更多资源

     

    展开全文
  • java实现发送短信验证码功能

    千次下载 热门讨论 2015-04-17 19:44:36
    使用的是信易通的短信平台接口,然后在Java中使用HttpClient模拟POST请求或者GET请求(看短信平台要求,一般的情况下都是POST请求),调用短信平台提供的接口(遵循短信平台的接口规范即可)发送短信验证码
  • Java发送短信

    2019-06-11 08:20:20
    7、发送短信: 8、注意事项: 1、网上注册用户: 在中国网建中注册用户,本程序是通过中国网建提供的SMS短信平台实现的,该平台新用户注册可以拥有免费5条普通短信和3条彩信,足够进行尝试和体验了。 2、修改...

    目录

    1、网上注册用户:

    2、修改短信签名:

    3、修改验证码网关和绑定短信模板:

    4、引入jar包:

    5、编写发短信代码:

    6、查看用户秘钥:

    7、发送短信:

    8、注意事项:


     

    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 模拟器上看不出来效果 骚等.... 点击发送短信 提示...
  • 所以接下来就把发送短信的具体实现过程记录下来,既是为了自己以后查阅方便,也是想分享给大家,如果有什么不足的地方欢迎大家不吝指出。 这里我使用的是腾讯云提供的短信服务,使用该服务之前我们需要完成认证,有...
  • python:发送短信

    2018-06-16 19:23:56
    发送短信 发送短信也是项目中常见的功能,网站的注册码、验证码、营销信息基本上都是通过短信来发送给用户的。在下面的代码中我们使用了互亿无线短信平台(该平台为注册用户提供了50条免费短信以及常用开发语言发送...
  • 业务中发送短信:在完成订单后给用户发送短信提示。 ETL发送:通过一些数据分析需求,给一些筛选出的用户发送特定的短信(例:在订单快要过期的前两天发送提示短信。) 自定义发送:提供使用页面,上传需要发送的...
  • 我想知道,用perl脚本调用短信接口发送短信,之后如何让把接口返回码和数据一起写入到oracle数据库中,存放在一张表中,脚本该怎么写啊?
  • 使用阿里云的短信服务发送短信

    千次阅读 2019-04-11 00:02:00
    原文地址使用阿里云的短信服务发送短信 在给客户开发一个信息发送功能的时候,需要涉及到短信的发送,短信发送一般不同的厂商提供的接口不同,处理方式也不太一样,之前用的一个厂商的,提供了一个封装类就很容易...
  • java调用短信接口实现发送短信

    千次阅读 2020-06-22 22:10:45
    java调用短信接口实现发送短信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:23
    Java 发送短信验证码给手机 发送短信验证码其实很简单,就是调用一下第三方的短信API接口,填写参数,发送请求,第三方平台会将信息发送给对方手机当中 介绍 我个人测试所使用的第三方API是“秒嘀”,理由是因为...
  • 发送手机号码通知或者短信,我们可以通过平台来自动批量的发送短信。 需要先在平台上面完成身份认证、签名认证、信息内容报备,平台审核通过后才可以使用。 测试 下面是以"秒赛科技"来进行测试,之前有试过阿里云,...
  • smgp3.0发送短信不稳定

    2019-05-23 10:16:10
    smgp3.0发送短信,短信过长需要拆分,短信拆分后存在部分发送不成功的情况;比如一条内容被拆分成四条短信进行发送,但是收到其中的哪几条是不稳定的。求助该如何解决?
  • java实现发送短信

    万次阅读 2018-01-19 16:23:08
    java实现发送短信(本章调用阿里云API) 地址如下 https://market.aliyun.com/products/56928004/cmapi022659.html?spm=5176.2020520132.101.5.TsClbR#sku=yuncode16659000011 进入控制台得到AppCode 告诉商家...
  • java调用webservice调用短信接口发送短信 本人现在有个功能是发送短信验证码,第三方只给了一个url,领导说利用web service调用短信接口就好了 求助一下 具体实现的思路和技术点
  • 1. 调用系统发送短信界面(并指定短信接收人和短信内容)  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:38
    Android发送短信验证码
  • Android 双卡发送短信

    千次阅读 2016-03-29 17:05:13
    Adnroid双卡手机发送短信
  • 如何发送短信验证码

    千次阅读 2018-07-08 21:07:03
    如何发送短信验证码短信验证码是一种有效的验证方式,它可以大大的增加网站和APP的安全性,防止用户恶意注册,其工作原理就是,用户在注册框,输入自己的手机号码,点击获取短信验证码,然后网站后台和APP后台生产...
  • App内发送短信

    千次阅读 2017-12-12 14:53:48
     App 内发送短信是不用跳出App利用手机系统的发短信页面直接在本App内就可以发送短信的功能。本功能在 iOS4.0 的时被引入进来,主要是使用 #import  头文件下的 MFMessageComposeViewController 类。 第...
  • 开始以为是tomcat的原因 毕竟本地运行tomcat是可以的,不断百度这个方向。后面经经理提点 短信接口都是post...至于解决方式目前只是把发送短信的内容转移到java代码中,可自行放数据库 或者配置文件中。 ...
  • android批量发送短信

    千次阅读 2017-01-12 12:43:03
    快过年了,自己写了个android批量发送短信,短信前面添加人名,用来节日发短信,这样别人就不知道我是批量发送的了哈哈哈,当然写的很菜,刚开始玩这个敬请指教    短信发送后去短信列表查看     首先...
  • iOS中发送短信

    2019-06-20 18:38:11
    在开发过程中,有时会需要调用原生的发送短信功能,用来实现自己应用中的一些业务处理流程,对此,官方开放了两个API可以供开发者调用 OpenURL方式 首先,最简单的方式是调用OpenURL,代码如下: [[UIApplication ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,699
精华内容 9,479
关键字:

发送短信