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

分享到:
  • 2011-04-14 17:25
  • 浏览 2521
  • 评论(0)
  • 分类:移动开发
  • 相关推荐
评论
发表评论

您还没有登录,请您登录后再发表评论

wangtingshuai
  • 浏览: 2521 次
  • 性别:
  • 来自: 秦皇岛
最近访客 更多访客>>
dylinshi126
文章分类
  • 全部博客 (1)
社区版块
  • 我的资讯 (0)
  • 我的论坛 (1)
  • 我的问答 (0)
存档分类
  • 2011-04 (1)
  • 更多存档...
最新评论

声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。若作者同意转载,必须以超链接形式标明文章原始出处和作者。
© 2003-2015 ITeye.com. All rights reserved. [ 京ICP证110151号 京公网安备110105010620 ]

更多相关文章

  1. Android(安卓)Input输入系统之一:KeyEvent事件监听
  2. android 常用的数据库表以及操作说明
  3. 【Android】添加菜单和监听菜单方法详解
  4. androidのMMS短信发送过程(一)
  5. Android短信发送流程之长短信发送(原)
  6. 关于Android(安卓)设置监听的的四种方式的理解
  7. Android(安卓)定位当前位置可能出现的问题
  8. h5页面点击按钮,触发手机自带的发短信
  9. android小功能实现之发送短信

随机推荐

  1. android 关于Toast重复显示解决方法
  2. Android开源介绍-UI组件
  3. Android编译环境的搭建
  4. Content Provider 使用教程
  5. Android中点击文字打开QQ对话
  6. Eclipse 导入安卓项目 No projects are f
  7. Flutter启动白屏界面优化
  8. Android开发上传图片到服务器(一.图片选
  9. 2019-11-22 Notification(通知服务)的实
  10. android api 26 ActivityManagerNative类