EX06_01_SMSreceiver.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:2k
源码类别:

android开发

开发平台:

Java

  1. package irdc.EX06_01;
  2. /*必须引用BroadcastReceiver类*/
  3. import android.content.BroadcastReceiver;
  4. import android.content.Context; 
  5. import android.content.Intent; 
  6. import android.os.Bundle; 
  7. /*必须引用telephoney.gsm.SmsMessage来收取短信*/
  8. import android.telephony.gsm.SmsMessage; 
  9. /*必须引用Toast类来告知用户收到短信*/
  10. import android.widget.Toast; 
  11. /* 自定义继承自BroadcastReceiver类,聆听系统服务广播的信息 */
  12. public class EX06_01_SMSreceiver extends BroadcastReceiver 
  13.   /*声明静态字符串,并使用android.provider.Telephony.SMS_RECEIVED
  14.   作为Action为短信的依据*/
  15.   private static final String mACTION = 
  16.   "android.provider.Telephony.SMS_RECEIVED"; 
  17.   
  18.   @Override 
  19.   public void onReceive(Context context, Intent intent) 
  20.   { 
  21.     // TODO Auto-generated method stub 
  22.     /* 判断传来Intent是否为短信*/
  23.     if (intent.getAction().equals(mACTION)) 
  24.     { 
  25.       /*建构一字符串集合变量sb*/
  26.       StringBuilder sb = new StringBuilder(); 
  27.       /*接收由Intent传来的数据*/
  28.       Bundle bundle = intent.getExtras(); 
  29.       /*判断Intent是有数据*/
  30.       if (bundle != null) 
  31.       { 
  32.         /* pdus为 android内置短信参数 identifier
  33.          * 通过bundle.get("")返回一包含pdus的对象*/
  34.         Object[] myOBJpdus = (Object[]) bundle.get("pdus"); 
  35.         /*构建短信对象array,并依据收到的对象长度来创建array的大小*/
  36.         SmsMessage[] messages = new SmsMessage[myOBJpdus.length];  
  37.         for (int i = 0; i<myOBJpdus.length; i++)
  38.         {  
  39.           messages[i] =
  40.           SmsMessage.createFromPdu((byte[]) myOBJpdus[i]);
  41.         }
  42.           
  43.         /* 将送来的短信合并自定义信息于StringBuilder当中 */  
  44.         for (SmsMessage currentMessage : messages) 
  45.         {  
  46.           sb.append("接收到来自:n");  
  47.           /* 来讯者的电话号码 */ 
  48.           sb.append(currentMessage.getDisplayOriginatingAddress());
  49.           sb.append("n------传来的短信------n");  
  50.           /* 取得传来信息的BODY */  
  51.           sb.append(currentMessage.getDisplayMessageBody());  
  52.         }  
  53.       }    
  54.       /* 以Notification(Toase)显示来讯信息  */
  55.       Toast.makeText
  56.       (
  57.         context, sb.toString(), Toast.LENGTH_LONG
  58.       ).show();
  59.        
  60.       /* 返回主Activity */ 
  61.       Intent i = new Intent(context, EX06_01.class); 
  62.       /*设置让以一个全新的task来运行*/
  63.       i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
  64.       context.startActivity(i); 
  65.     } 
  66.   } 
  67. }