Android接收短信可以使用SmsManager类,发送短信可以使用SmsManager类的sendTextMessage方法。
在Android中,接收短信并显示的API主要涉及到以下几个步骤:
1、注册广播接收器
2、创建短信过滤器
3、处理接收到的短信
4、显示短信内容
以下是详细的步骤和代码示例:
1、注册广播接收器
需要在AndroidManifest.xml文件中注册一个广播接收器,用于接收短信。
<receiver android:name=".SmsReceiver"> <intentfilter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intentfilter> </receiver>
2、创建短信过滤器
创建一个类SmsReceiver,继承BroadcastReceiver,并重写onReceive方法,在onReceive方法中,可以获取到接收到的短信对象,然后根据需要过滤短信。
public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (Telephony.Sms.Intents.SMS_RECEIVED_ACTION.equals(intent.getAction())) { Bundle bundle = intent.getExtras(); if (bundle != null) { Object[] pdus = (Object[]) bundle.get("pdus"); for (Object pdu : pdus) { SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu); String sender = smsMessage.getDisplayOriginatingAddress(); String messageBody = smsMessage.getMessageBody(); // 根据需要过滤短信,例如只显示来自特定号码的短信 if (sender.startsWith("10086")) { Toast.makeText(context, "收到短信:" + messageBody, Toast.LENGTH_SHORT).show(); } } } } } }
3、处理接收到的短信
在onReceive方法中,已经对接收到的短信进行了处理,如果需要进一步处理,可以在此处添加逻辑,可以将短信内容保存到数据库或发送到服务器等。
4、显示短信内容
在上面的代码示例中,已经使用Toast显示了短信内容,如果需要在其他界面显示短信内容,可以使用Intent将短信内容传递给目标Activity。
Intent intent = new Intent(context, SmsDetailActivity.class); intent.putExtra("sender", sender); intent.putExtra("messageBody", messageBody); context.startActivity(intent);
在目标Activity中,可以通过以下方式获取短信内容:
String sender = getIntent().getStringExtra("sender"); String messageBody = getIntent().getStringExtra("messageBody");