Android收发短信

本文介绍了如何在Android中使用编程方式实现短信功能,包括调用短信编辑界面、发送短信及接收短信的方法,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

调用短信编辑界面

Intent smsIntent = new Intent(Intent.ACTION_SENDTO,
					Uri.parse("sms:5556"));
			smsIntent.putExtra("sms_body", "Press send to send me");
			startActivity(smsIntent);

发送短信比较简单:

String SENT_SMS_ACTION = "SENT_SMS_ACTION";
		String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";
		
		SmsManager smsManager = SmsManager.getDefault();
		String sendTo = "5556";
		String myMessage = "Android supports programmatic SMS messaging!";
		
		// Create the sentIntent parameter
		Intent sentIntent = new Intent(SENT_SMS_ACTION);
		PendingIntent sentPI = PendingIntent.getBroadcast(getApplicationContext(),
				0,	sentIntent, 0);
		
		// Create the deliveryIntent parameter
		Intent deliveryIntent = new Intent(DELIVERED_SMS_ACTION);
		PendingIntent deliverPI = PendingIntent.getBroadcast(getApplicationContext(),
				            	0,	deliveryIntent,	0);
		
		// Register the Broadcast Receivers
		registerReceiver(new BroadcastReceiver()
		{
			public void onReceive(Context _context, Intent _intent)
			{
				switch (getResultCode()) {
				case Activity.RESULT_OK:
					 break;
				case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
					 break;
				case SmsManager.RESULT_ERROR_RADIO_OFF:
					break;
				case SmsManager.RESULT_ERROR_NULL_PDU:
					break;
				}
			}
		},
		new IntentFilter(SENT_SMS_ACTION));
		
		registerReceiver(new BroadcastReceiver() {
			@Override
			public void onReceive(Context _context, Intent _intent)
			{
				
			}
		},
		new IntentFilter(DELIVERED_SMS_ACTION));
		// Send the message
		smsManager.sendTextMessage(sendTo, null, myMessage, sentPI, deliverPI);

接受短信要注册一个listener:

        final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
        IntentFilter filter = new IntentFilter(SMS_RECEIVED);
        BroadcastReceiver receiver = new IncomingSMSReceiver();
        registerReceiver(receiver, filter);
自定义的listener:

class IncomingSMSReceiver extends BroadcastReceiver 
{
	private static final String queryString = "@echo";
	private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
	
	public void onReceive(Context _context, Intent _intent) 
	{
		if (_intent.getAction().equals(SMS_RECEIVED)) 
		{
			SmsManager sms = SmsManager.getDefault();
			Bundle bundle = _intent.getExtras();
			if (bundle != null) {
				Object[] pdus = (Object[]) bundle.get("pdus");
				SmsMessage[] messages = new SmsMessage[pdus.length];
				for (int i = 0; i < pdus.length; i++)
					messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
				for (int i=0; i<messages.length; i++)
				{
					SmsMessage message = messages[i];
					String msg = message.getMessageBody();
					String to = message.getOriginatingAddress();
					
					if (msg.toLowerCase().startsWith(queryString)) 
					{
						String out = msg.substring(queryString.length());
						sms.sendTextMessage(to, null, out, null, null);
					}
				}
			}
		}
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值