按关键词转发短信至指定手机号

移动开发
很多时候我们需要对短信进行筛选,将指定短信转发到特定手机号,以防止遗漏重要内容,本程序就是实现这个功能。可以设置全部转发,也可设置只转发设置关键词内容的转发。可设置多个关键词,关键词以空格或者逗号分隔。

源码简介

很多时候我们需要对短信进行筛选,将指定短信转发到特定手机号,以防止遗漏重要内容,本程序就是实现这个功能。可以设置全部转发,也可设置只转发设置关键词内容的转发。可设置多个关键词,关键词以空格或者逗号分隔。
转发全部短信时,将忽略关键词设置。打开关键词模式时,忽略全部转发的开关。开发这个的原因在于,网上现在有些类似功能的,但多数是转发到email,一般不提供转发短信功能,而有的转发短信的是付费服务,同时所有短信会被发送到他们的服务器,造成信息安全、隐私泄露隐患。
包名、文件名方面需注意,不要写sms forward字眼,否则会被防火墙阻挡。
源码运行截图

源码片段:

  1. public class SmsReceiver extends BroadcastReceiver { 
  2.     static final Object mStartingServiceSync = new Object(); 
  3.     static PowerManager.WakeLock mStartingService=null
  4.     private static SmsReceiver sInstance=null
  5.     private static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED"
  6.     private StringBuilder msgbody=new StringBuilder(); 
  7.     static int recnum=1
  8.     static int fwdnum=1
  9.       
  10.     public static SmsReceiver getInstance() { 
  11.         if (sInstance == null) { 
  12.             sInstance = new SmsReceiver(); 
  13.         } 
  14.         return sInstance; 
  15.     } 
  16.   
  17.     @Override 
  18.     public void onReceive(final Context context, Intent intent) { 
  19.         final Context mContext=context; 
  20.           
  21.         final SharedPreferences settings = context.getSharedPreferences(SmsFilterConfig.APP_SET_NAME, Context.MODE_PRIVATE); 
  22.         boolean isActive = settings.getBoolean(SmsFilterConfig.KEY_IS_ENABLED, false); 
  23.         final boolean isRemoteEnabled = settings.getBoolean(SmsFilterConfig.KEY_FILTER_ENABLED, false); 
  24.         final String telNumber = settings.getString(SmsFilterConfig.KEY_SMS_NO, ""); 
  25.         String smskeyword = settings.getString(SmsFilterConfig.SMSKEYWORD, ""); 
  26.         SensitivewordFilter filter = new SensitivewordFilter(smskeyword); 
  27.           
  28.         //beginStartingService(context, intent); 
  29.           
  30.         if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){ 
  31.             recnum++; 
  32.         } 
  33.         if ((isActive||isRemoteEnabled)&&intent.getAction().equals(SMS_RECEIVED_ACTION)) { 
  34.             Bundle bundle = intent.getExtras(); // ---get the SMS message passed in--- 
  35.             String msg_from = "", message = ""
  36.             if (bundle != null) { 
  37.                 try { 
  38.                     Object[] pdus = (Object[])intent.getExtras().get("pdus"); 
  39.                     SmsMessage[] messages = new SmsMessage[pdus.length]; 
  40.                     for (int i = 0; i < pdus.length; i++){ 
  41.                         messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
  42.                     } 
  43.                     msgbody.delete(0, msgbody.length()); 
  44.                     for (SmsMessage mes : messages){ 
  45.                         msgbody.append(mes.getMessageBody()); 
  46.                         msg_from = mes.getOriginatingAddress(); 
  47.                     } 
  48.                     message=msgbody.toString().replaceAll("\\s"""); 
  49.                 }catch (Exception e) { 
  50.                     e.printStackTrace(); 
  51.                 } 
  52.             } 
  53.             if (isRemoteEnabled ) { 
  54.                 boolean a= filter.isContaintSensitiveWord (message, 1);Log.d("""4"); 
  55.                 //Set<string> set = filter.getSensitiveWord("aaefggh", 1);Log.d("", "4"); 
  56.                 if (a){ 
  57.                     isActive = true
  58.                 } 
  59.             } 
  60.   
  61.             if (isActive && telNumber != null && telNumber.length() > 0) { 
  62.                 SmsManager smsManager = SmsManager.getDefault(); 
  63.                 smsManager.sendTextMessage(telNumber, null
  64.                         message+ " -From- " +msg_from, nullnull); 
  65.                 fwdnum++; 
  66.             } 
  67.         } 
  68.         String title=context.getString(R.string.app_name); 
  69.         String sAgeFormat = context.getString(R.string.notifyinfo); 
  70.         String body=String.format(sAgeFormat, recnum, fwdnum); 
  71.         MessageUtils.updateNotifications(mContext, title, body); 
  72.         //finishBlockSms(); 
  73.         /*SharedPreferences.Editor editor = settings.edit(); 
  74.         editor.putInt(SmsFilterConfig.KEY_REC_NUM, recnum); 
  75.         editor.commit();*/ 
  76.         //MessageUtils.writeIntPref(mContext,SmsFilterConfig.KEY_REC_NUM, recnum); 
  77.        // MessageUtils.writeIntPref(mContext,SmsFilterConfig.KEY_FWD_NUM, fwdnum); 
  78.     } 
  79.     @SuppressWarnings("deprecation"
  80.     public static void updateNotifications(Context mContext,String title,String body){ 
  81.         NotificationManager nm; 
  82.         Intent  mIntent; 
  83.         PendingIntent pd; 
  84.         Notification  baseNF; 
  85.         nm = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); 
  86.         mIntent=new Intent("com.dx.util.SmsFilterConfig"); 
  87.         mIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_NEW_TASK); 
  88.         pd = PendingIntent.getActivity(mContext, 0, mIntent, PendingIntent.FLAG_UPDATE_CURRENT); //如果转移内容则用m_Intent(); 
  89.         baseNF = new Notification(); 
  90.         baseNF.icon = R.drawable.icon; 
  91.         baseNF.tickerText = title; 
  92.         baseNF.flags |= Notification.FLAG_NO_CLEAR;  
  93.         //设置通知显示的参数 
  94.         baseNF.setLatestEventInfo(mContext, title, body, pd); 
  95.         nm.notify(R.string.app_name, baseNF); 
  96.     } 
  97. }</string> 

源码链接:http://down.51cto.com/data/1985029

责任编辑:chenqingxiang 来源: 网络整理
相关推荐

2011-06-20 14:32:59

关键词

2011-06-07 18:45:41

关键词

2011-06-14 19:11:38

关键词

2019-12-22 13:48:26

退休科技行业大佬

2011-05-25 17:38:56

关键词

2013-08-26 15:43:40

AppStore关键词开发者应用选取关键词

2011-05-25 17:58:00

2013-05-24 11:20:13

2009-11-03 09:02:59

Windows 7苹果竞争

2011-07-22 15:48:46

SEO

2014-09-12 14:03:45

操作系统

2011-06-19 12:20:47

长尾关键词

2012-03-20 22:19:16

Linux

2011-06-14 10:01:03

长尾关键词

2021-06-02 22:18:11

Python关键词微博

2011-06-16 17:32:48

关键词

2011-07-06 18:18:01

关键词密度

2011-06-10 13:34:17

关键词

2012-04-25 16:34:04

ASO关键词描述

2021-09-18 05:37:34

手机号一证通查微信
点赞
收藏

51CTO技术栈公众号