您的位置:首页 > 移动开发 > Android开发

Android收发短信

2011-10-30 12:49 253 查看
调用短信编辑界面

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);
}
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: