天天看点

android开发之发送短信SMS

之前也查了一些资料和博客,我在我的应用中加了一个用户反馈的界面,其实就是给我发一条短信。

具体代码如下。

/**
	 *@ 参数说明
	 * destinationAddress:收信人的手机号码
	 * scAddress:发信人的手机号码 
	 * text:发送信息的内容 
	 * sentIntent:发送是否成功的回执,用于监听短信是否发送成功。
	 * DeliveryIntent:接收是否成功的回执,用于监听短信对方是否接收成功。
	 */
    private void sendSMS(String message) {
    	Log.d(TAG,"sendSMS");
    	// ---sends an SMS message to another device---
    	SmsManager sms = SmsManager.getDefault();
    	String phoneNumber="15216184553";
    	
    	// create the sentIntent parameter
    	Intent sentIntent = new Intent(SENT_SMS_ACTION);
    	PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, sentIntent,0);
    	// create the deilverIntent parameter
    	Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION);
    	PendingIntent deliverPI = PendingIntent.getBroadcast(this, 0,deliverIntent, 0);

    	//如果短信内容超过70个字符 将这条短信拆成多条短信发送出去
    	try{
	    	if (message.length() > 70) {
	    	    ArrayList<String> msgs = sms.divideMessage(message);
	    	    for (String msg : msgs) {
	    		 sms.sendTextMessage(phoneNumber, null, msg, sentPI, deliverPI);
	    	    }
	    	} else {
	    	    sms.sendTextMessage(phoneNumber, null, message, sentPI, deliverPI);
	    	}
	    	dialog.show();
		}catch(IllegalArgumentException e){
			e.printStackTrace();
			Log.e(TAG,"IllegalArgumentException");
		}catch(Exception e){
			Log.e(TAG,"Exception");
		}
	 }
           

还有一个广播,当发送成功则提示OK.

private BroadcastReceiver sendMessage = new BroadcastReceiver() {
		@Override
		public void onReceive(Context context, Intent intent) {
		    //判断短信是否发送成功
		    switch (getResultCode()) {
		    case Activity.RESULT_OK:
		    	
		    	Toast toast=Toast.makeText(context, "您的意见已经提交成功,您的十分满意是我们的百倍追求!", Toast.LENGTH_SHORT);
		    	toast.setGravity(Gravity.CENTER, 0, 0);
				toast.show();
				dialog.dismiss();
				edit_suggestion.setText("");
		    	break; 
		    default:
		    	Log.i(TAG,"send message failed!");
		    	break;
		    }
		}
	 };
	    
	 private BroadcastReceiver receiver = new BroadcastReceiver() {
			@Override
			public void onReceive(Context context, Intent intent) {
			    //表示对方成功收到短信
			    Log.i(TAG,"receive message successful!");
			}
	 };
           

当然,你在onCreate()方法中需要注册:

// 注册广播 发送消息
		registerReceiver(sendMessage, new IntentFilter(SENT_SMS_ACTION));
		registerReceiver(receiver, new IntentFilter(DELIVERED_SMS_ACTION));
           

做好这一切之后,基本实现了一个发短信的功能,当然你得有一个按钮来触发这个发短信的事件,这里就不说了。

除此之外,要加入发短信的权限在Manifest文件中

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

好了,效果如图:

android开发之发送短信SMS

安卓市场:http://apk.hiapk.com/html/2013/05/1468059.html?module=256&info=IWjtVg9cqVJLYg%3D%3D

N多市场:http://www.nduoa.com/apk/detail/553415

360手机助手:http://zhushou.360.cn/search/index/?kw=%E6%A0%A1%E5%9B%AD%E5%B0%8F%E5%8A%A9%E6%89%8B

百度应用:http://as.baidu.com/a/item?docid=3101724&pre=web_am_se

优亿市场(eoe):http://www.eoemarket.com/search/apps/?keyword=%E6%A0%A1%E5%9B%AD%E5%B0%8F%E5%8A%A9%E6%89%8B

继续阅读