BroadcastReceiver动态注册实现短信接收

来源:互联网 发布:js数组添加对象 编辑:程序博客网 时间:2024/05/16 12:16
package com.example.receivesmsdongtai;import java.text.SimpleDateFormat;import java.util.Date;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.telephony.SmsMessage;import android.util.Log;import android.view.Menu;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {private TextView SMSText;private String sender;//发送者private String content;//短信内容private String sendtime;//发送时间protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);SMSText = (TextView)findViewById(R.id.SMSText);IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");registerReceiver(SMSReceiver,filter);}private BroadcastReceiver SMSReceiver = new BroadcastReceiver() {public void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubString SMS = intent.getAction();Log.i("SMS",SMS);Bundle bundle = intent.getExtras(); //在Bundle对象当中有个叫"pdus"的属性,这个属性的值是一个Objec数组Object messages[] = (Object[]) bundle.get("pdus");//创建一个SmsMessage类型的数组  SmsMessage smsMessage[] = new SmsMessage[messages.length]; for (int n = 0; n < messages.length; n++) {  //使用Object数组当中的对象创建SmsMessgae对象 smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);sender = smsMessage[n].getOriginatingAddress();// 获取短信的发送者  content = smsMessage[n].getMessageBody();// 获取短信的内容  Date date = new Date(smsMessage[n].getTimestampMillis());// 获取短信的接收时间  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  sendtime = format.format(date); }//Toast.makeText(context,sender+":"+sendtime+":"+content+":",Toast.LENGTH_LONG).show();SMSText.setText(content);}};public boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

0 0