android 短信监听
Android手机上监听短信有两种方式:
1、接受系统的短信广播,操作短信内容。
优点:操作方便,适合简单的短信应用。
缺点:来信会在状态栏显示通知信息。
AndroidManifest.xml:
<uses-permissionandroid:name="android.permission.SEND_SMS"></uses-permission> <uses-permissionandroid:name="android.permission.RECEIVE_SMS"></uses-permission>
<!-- Receiver --> <receiverandroid:name=".sms.SMSReceiver"> <intent-filter> <actionandroid:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver> |
code:
packageorg.anymobile.demo.sms;
importandroid.content.BroadcastReceiver; importandroid.content.Context; importandroid.content.Intent; importandroid.telephony.gsm.SmsMessage; importandroid.util.Log;
publicclassSMSReceiverextendsBroadcastReceiver { publicstaticfinalStringTAG="ImiChatSMSReceiver"; //android.provider.Telephony.Sms.Intents publicstaticfinalStringSMS_RECEIVED_ACTION="android.provider.Telephony.SMS_RECEIVED";
@Override publicvoidonReceive(Context context, Intent intent) { if(intent.getAction().equals(SMS_RECEIVED_ACTION)) { SmsMessage[] messages = getMessagesFromIntent(intent); for(SmsMessage message : messages) { Log.i(TAG, message.getOriginatingAddress() +" : "+ message.getDisplayOriginatingAddress() +" : "+ message.getDisplayMessageBody() +" : "+ message.getTimestampMillis()); } } }
publicfinalSmsMessage[] getMessagesFromIntent(Intent intent) { Object[] messages = (Object[]) intent.getSerializableExtra("pdus"); byte[][] pduObjs =newbyte[messages.length][];
for(inti = 0; i < messages.length; i++) { pduObjs[i] = (byte[]) messages[i]; } byte[][] pdus =newbyte[pduObjs.length][]; intpduCount = pdus.length; SmsMessage[] msgs =newSmsMessage[pduCount]; for(inti = 0; i < pduCount; i++) { pdus[i] = pduObjs[i]; msgs[i] = SmsMessage.createFromPdu(pdus[i]); } returnmsgs; }
} |
2、应用观察者模式,监听短信数据库,操作短信内容。
优点:可以拦截来信在状态栏的显示通知,适合作短信拦截。
缺点:可以发展成MU,在后台悄悄的收/发短信。
实例如下:
SystemEventReceiver:收到开机启动OK的广播后,启动BootService服务;收到应用发送短信的INTENT后,调用系统接口发送短信
BootService:开启服务后,打开短信监听器
SMSObserver:数据观察者,监听短信数据库
SMSHandler:短信处理器
AndroidManifest.xml:
<uses-permissionandroid:name="android.permission.READ_SMS"></uses-permission> <uses-permissionandroid:name="android.permission.WRITE_SMS"></uses-permission> <!-- Service --> <serviceandroid:name=".BootService" android:label="@string/app_name"> <intent-filter> <actionandroid:name="org.anymobile.test.service.IMICHAT"/> <categoryandroid:name="android.intent.category.DEFAULT"/> </intent-filter> </service> <!-- Receiver --> <receiverandroid:name=".SystemEventReceiver"> <intent-filter> <actionandroid:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> |
code:
packageorg.anymobile.demo.sms;
importandroid.content.ContentUris; importandroid.content.Context; importandroid.content.Intent; importandroid.net.Uri; importandroid.os.Handler; importandroid.os.Message; importandroid.util.Log;
publicclassSMSHandlerextendsHandler { publicstaticfinalStringTAG="SMSHandler";
privateContextmContext;
publicSMSHandler(Context context) { super(); this.mContextApple-conv 分享到:
评论发表评论您还没有登录,请您登录后再发表评论 wangtingshuai
最近访客 更多访客>>dylinshi126文章分类
社区版块
存档分类
最新评论声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。若作者同意转载,必须以超链接形式标明文章原始出处和作者。 © 2003-2015 ITeye.com. All rights reserved. [ 京ICP证110151号 京公网安备110105010620 ] |
更多相关文章
- Android(安卓)Input输入系统之一:KeyEvent事件监听
- android 常用的数据库表以及操作说明
- 【Android】添加菜单和监听菜单方法详解
- androidのMMS短信发送过程(一)
- Android短信发送流程之长短信发送(原)
- 关于Android(安卓)设置监听的的四种方式的理解
- Android(安卓)定位当前位置可能出现的问题
- h5页面点击按钮,触发手机自带的发短信
- android小功能实现之发送短信