跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Android如何实现接收和发送短信

每一部手机都具有短信接收和发送功能,下面我们通过代码来实现接收和发送短信功能。

一、接收短信

1、创建内部广播接收器类,接收系统发出的短信广播

2、从获得的内容中解析出短信发送者和短信内容

3、在Activity中注册广播

4、添加接收短信权限

下面放上具体的代码

activity_main.xml文件用于显示短信发送者号码和显示短信内容

MainActivity.java文件public class MainActivity extends AppCompatActivity {private TextView fromTv;private TextView contentTv;

private IntentFilter intentFilter;private MessageReceiver messageReceiver;

@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);

initView();getSms();}

private void getSms() {intentFilter = new IntentFilter(); intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");messageReceiver = new MessageReceiver();//设置较高的优先级intentFilter.setPriority(100);registerReceiver(messageReceiver, intentFilter);}

private void initView() {fromTv = (TextView) findViewById(R.id.sms_from_txt);contentTv = (TextView) findViewById(R.id.sms_content_txt);}

@Override protected void onDestroy() {super.onDestroy();unregisterReceiver(messageReceiver);}

class MessageReceiver extends BroadcastReceiver {@Override public void onReceive(Context context, Intent intent) {Bundle bundle = intent.getExtras();//提取短信消息Object[] pdus = (Object[]) bundle.get("pdus");SmsMessage[] messages = new SmsMessage[pdus.length];for (int i = 0; i < messages.length; i++) {messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);}//获取发送方号码String address = messages[0].getOriginatingAddress();

String fullMessage = "";for (SmsMessage message : messages) {//获取短信内容fullMessage += message.getMessageBody();}//截断广播,阻止其继续被Android自带的短信程序接收到abortBroadcast();fromTv.setText(address);contentTv.setText(fullMessage);}}}

注:

注册的广播接收器,一定要在OnDestroy()方法中取消注册。

由于短信广播是有序广播,如果我们不想让Android自带的短信程序接收到短信,就可以设置我们自身接收器的优先级,同时在我们接受完广播后将广播截断,阻止其被Android自带的短信程序接收到。

二、发送短信

1、获取接收者的号码和短信内容

2、获得短信发送管理实例

3、构造PendingIntent启动短信发送状态监控广播

4、调用发送短信函数,传入参数发送短信

5、构造广播接收器内部类监控短信是否发送成功

6、获得广播接收器实例和IntentFilter实例,注册广播接收器

7、在onDestroy()中取消注册的广播接收器

8、在AndroidManifest.xml文件中加入短信发送权限下面放上具体的布局文件和代码

activity_send_msg.xml文件

相关文章