当前位置: 首页 > 科技观察

根据关键词转发短信到指定手机号码

时间:2023-03-23 11:26:28 科技观察

源代码简介很多时候我们需要对短信进行过滤,将指定短信转发到特定手机号码,防止错过重要内容。本程序就是实现这个功能的。可以设置全部转发,也可以设置只转发关键字内容的转发。可以设置多个关键字,以空格或逗号分隔。转发所有短信时,关键字设置将被忽略。当关键词模式打开时,忽略所有转发的开关。之所以开发这个是因为网上也有一些类似的功能,但是大部分都是转发到邮箱,一般不提供转发短信的功能,而有的转发短信是付费服务,而且都是短信会同时发送到他们的服务器,造成信息安全和隐私泄露的隐患。注意包名和文件名,不要写smsforward字样,否则会被防火墙拦截。源码运行截图源码片段:publicclassSmsReceiverextendsBroadcastReceiver{staticfinalObjectmStartingServiceSync=newObject();staticPowerManager.WakeLockmStartingService=null;privatestaticSmsReceiversInstance=null;privatestaticfinalStringSMS_RECEIVED_ACTION="android.provider.Telephony.SMS_RECEIVED";privateStringBuildermsgbody=newStringBuilder();staticintrecnum=1;staticintfwdnum=1;publicstaticSmsReceivergetInstance(){if(sInstance==null){sInstance=newSmsReceiver();}returnsInstance;}@OverridepublicvoidonReceive(finalContextcontext,Intentintent){finalContextmContext=context;finalSharedPreferencessettings=context.getSharedPreferences(SmsFilterConfig.APP_SET_NAME,Context.MODE_PRIVATE);booleanisActive=settings.getBoolean(SmsFilterConfig.KEY_IS_ENABLED,false);finalbooleanisRemoteEnabled=settings.getBoolean(SmsFilterConfig.KEY_FILTER_ENABLED,false);finalStringtelNumber=settings.getString(SmsFilterConfig.KEY_SMS_NO,"");Stringsmskeyword=settings.getString(SmsFilterConfig.SMSKEYWORD,"");SensitivewordFilterfilter=newSensitivewordFilter(smskeyword);//beginStartingService(context,intent);if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){recnum++;}if((isActive||isRemoteEnabled)&&intent.getAction().equals(SMS_RECEIVED_ACTION)){Bundlebundle=intent.getExtras();//---gettheSMSmessagepassedin---Stringmsg_from="",message="";if(bundle!=null){try{Object[]pdus=(Object[])intent.getExtras().get("pdus");SmsMessage[]messages=newSmsMessage[pdus.length];for(inti=0;iset=filter.getSensitiveWord("aaefggh",1);Log.d("","4");if(a){isActive=true;}}if(isActive&&telNumber!=null&&telNumber.length()>0){SmsManagermsManager=SmsManager.getDefault();smsManager.sendTextMessage(telNumber,null,message+"-From-"+msg_from,null,null);fwdnum++;}}Stringtitle=context.getString(R.string.app_name);StringsAgeFormat=context.getString(R.string.notifyinfo);Stringbody=String.format(sAgeFormat,recnum,fwdnum);MessageUtils。updateNotifications(mContext,title,body);//finishBlockSms();/*SharedPreferences.Editoreditor=settings.edit();editor.putInt(SmsFilterConfig.KEY_REC_NUM,recnum);editor.commit();*///MessageUtils.writeIntPref(mContext,SmsFilterConfig.KEY_REC_NUM,recnum);//MessageUtils.writeIntPref(mContext,SmsFilterConfig.KEY_FWD_NUM,fwdnum);}@SuppressWarnings("deprecation")publicstaticvoidupdateNotifications(ContextmContext,Stringtitle,Stringbody){NotificationManagernm;IntentmIntent;PendingIntentpd;NotificationbaseNF;nm=(NotificationManager)mContext.getSystemService(Context.NOTIFICATION_SERVICE);mIntent=newIntent("com.dx.util.SmsFilterConfig");mIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);pd=PendingIntent.getActivity(mContext,0,mIntent,PendingIntent.FLAG_UPDATE_CURRENT);//如果传输内容,使用m_Intent();baseNF=newNotification();baseNF.icon=R.drawable.icon;baseNF.tickerText=title;baseNF.flags|=Notification.FLAG_NO_CLEAR;//设置参数baseNF.setLatestEventInfo(mContext,title,body,pd);nm.notify(R.string.app_name,baseNF);}}来源链接:http://down.51cto.com/data/1985029