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

android开发

开发平台:

Java

  1. package irdc.EX06_05;
  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_05SMSreceiver extends BroadcastReceiver 
  13.   /*
  14.   * 声明静态字符串,并使用
  15.   * android.provider.Telephony.SMS_RECEIVED
  16.   * 作为Action为短信的依据
  17.   */
  18.   private static final String mACTION =
  19.   "android.provider.Telephony.SMS_RECEIVED";
  20.   
  21.   private String str_receive="收到短信!";
  22.   
  23.   @Override 
  24.   public void onReceive(Context context, Intent intent)
  25.   {
  26.     // TODO Auto-generated method stub 
  27.     Toast.makeText(context, str_receive.toString(),
  28.     Toast.LENGTH_LONG).show();
  29.     
  30.     /*判断传来Intent是否为短信*/
  31.     if (intent.getAction().equals(mACTION))
  32.     { 
  33.       /*建构一字符串集合变量sb*/
  34.       StringBuilder sb = new StringBuilder(); 
  35.       /*接收由Intent传来的数据*/
  36.       Bundle bundle = intent.getExtras(); 
  37.       /*判断Intent是有数据*/
  38.       if (bundle != null) 
  39.       { 
  40.         /* pdus为 android内置短信参数 identifier
  41.          * 通过bundle.get("")返回一包含pdus的对象*/
  42.         Object[] myOBJpdus = (Object[]) bundle.get("pdus");
  43.         
  44.         /*构造短信对象array,并依据收到的对象长度来创建array的大小*/
  45.         SmsMessage[] messages = new SmsMessage[myOBJpdus.length];  
  46.         
  47.         for (int i = 0; i<myOBJpdus.length; i++) 
  48.         {  
  49.           messages[i] =
  50.           SmsMessage.createFromPdu((byte[]) myOBJpdus[i]);
  51.         }
  52.           
  53.         /* 将送来的短信合并自定义信息于StringBuilder当中 */  
  54.         for (SmsMessage currentMessage : messages) 
  55.         {  
  56.           sb.append("接收到来自:n");  
  57.           /* 收信人的电话号码 */ 
  58.           sb.append(currentMessage.getDisplayOriginatingAddress());
  59.           sb.append("n------传来的短信------n");  
  60.           /* 取得传来信息的BODY */  
  61.           sb.append(currentMessage.getDisplayMessageBody()); 
  62.           Toast.makeText
  63.           (
  64.             context, sb.toString(), Toast.LENGTH_LONG
  65.           ).show();
  66.         }
  67.       }
  68.       
  69.       /* 以Notification(Toase)显示来讯信息  */
  70.       Toast.makeText
  71.       (
  72.         context, sb.toString(), Toast.LENGTH_LONG
  73.       ).show();
  74.        
  75.       /* 返回主Activity */ 
  76.       Intent i = new Intent(context, EX06_05.class); 
  77.       /*自定义一Bundle*/
  78.       Bundle mbundle = new Bundle(); 
  79.       /*将短信信息以putString()方法存入自定义的bundle内*/
  80.       mbundle.putString("STR_INPUT",  sb.toString()); 
  81.       /*将自定义bundle写入Intent中*/
  82.       i.putExtras(mbundle); 
  83.       /*设置Intent的Flag以一个全新的task来运行*/
  84.       i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
  85.       context.startActivity(i); 
  86.     } 
  87.   } 
  88. }