Android短信收发

Posted AYE89

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android短信收发相关的知识,希望对你有一定的参考价值。

接收SMS类,代码如下

//for receive SMS
    private SmsReceiver mSmsReceiver;
    @Override
    protected void onResume() {
        super.onResume();
        mSmsReceiver = new SmsReceiver();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
        intentFilter.setPriority(1000);
        registerReceiver(mSmsReceiver, intentFilter);
    }
    @Override
    protected void onPause() {
        super.onPause();
        unregisterReceiver(mSmsReceiver);
    }
    public class SmsReceiver extends BroadcastReceiver {
        public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";

        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            Log.d(TAG,"action: "+action);
            if (SMS_RECEIVED_ACTION.equals(action)) {
                Bundle bundle = intent.getExtras();

                //String messageContent = bundle.getString("message");
                Object[] pdus = (Object[]) bundle.get("pdus");//获取短信数组
                SmsMessage[] messages = new SmsMessage[pdus.length];
                String format = intent.getStringExtra("format");
                for (int i = 0; i < messages.length; i++) {
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                        messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i],format);//将pdu字符数组转换成SmsMessage对象
                    }
                    else {
                        messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                    }
                }
                String address = messages[0].getOriginatingAddress();//获取短信发送方的号码
                String fullMessage = "";
                for (SmsMessage message : messages) {
                    fullMessage += message.getMessageBody();//获取短信的内容
                }
                //sender.setText(address);
                //content.setText(fullMessage);
                Log.d(TAG,"SMS notes: "+fullMessage);
                abortBroadcast();
            }
        }
    }

  

以上是关于Android短信收发的主要内容,如果未能解决你的问题,请参考以下文章

android小知识点代码片段

谁有TC35i与PC收发短信的代码 包括打开串口 启动模块 接收短信发送短信 PDU解码

android: 接收和发送短信

VB控制COM口短信收发

SMS短信PDU编码

使用 AT 命令实现西门子短信猫收发短信实例