sunplusedu的个人空间 https://blog.eetop.cn/sunplusedu [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

【凌阳教育学堂】Android拦截短信并屏蔽Notification

已有 840 次阅读| 2011-12-31 12:06 |个人分类:嵌入式培训

来源: 凌阳教育嵌入式培训
  凌阳教育是全国唯一 “学员就业双100%品牌”,保证“学员100%就业”,保证“学员100%满意就业”。凌阳教育也是全国唯一“按班公布学员就业去向诚信机构”,每个班 所有学员来自哪个学校就业后签约哪家企业都真实发布。截止2011年9月,凌阳教育学员已连续27期“双100%就业”。凌阳教育是全国唯一“原厂嵌入式 培训机构”,以凌阳科技产业链企业的人才需求为契机,先后与2500多家企业建立学员就业合作关系。

拦截短信有几个关键点:

1.android接收短信时是以广播的方式

2.程序只要在自己的Manifest.xml里加有"接收"SMS的权限

view plaincopy to clipboardprint?
< uses-permission android:name="android.permission.RECEIVE_SMS">< /uses-permission> 

3.要写个广播接收类
view plaincopy to clipboardprint?
public
class smsreceiveandmask extends BroadcastReceiver { 
    private String TAG = "smsreceiveandmask"; 
    @Override

    public
void onReceive(Context context, Intent intent) { 

    } 
4.Manifest.xml的receiver标签里要加入intent-filter ,action为

view plaincopy to clipboardprint?
< action android:name="android.provider.Telephony.SMS_RECEIVED" /> 

5.重要的是要在这个intent-filter上加上priority优先级,以使自己接收到SMS优先于系统或其它软件

view plaincopy to clipboardprint?
< receiver android:name=".smsreceiveandmask" > 
            < intent-filter android:priority="1000">  
                < action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
            < /intent-filter> 
        < /receiver> 

6.当自己的程序接收到要屏蔽的SMS后,用
this.abortBroadcast();来结束广播的继续发给别的程序,这样系统就不会收到短信广播了,Notification也不会有提示了
view plaincopy to clipboardprint?
// 第三步:取消

        if (flags_filter) { 
            this.abortBroadcast(); 
        } 
源码如下:

Manifest.xml
view plaincopy to clipboardprint?
< ?xml version="1.0" encoding="utf-8"?> 
< manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.hwttnet.test.smsreceiveandmask" android:versionCode="1"

    android:versionName="1.0"> 
    < uses-sdk android:minSdkVersion="3" /> 
    < uses-permission android:name="android.permission.RECEIVE_SMS">< /uses-permission> 
    < application android:icon="@drawable/icon" android:label="@string/app_name"> 
        < receiver android:name=".smsreceiveandmask" > 
            < intent-filter android:priority="1000">  
                < action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
            < /intent-filter> 
        < /receiver> 
    < /application> 
< /manifest> 
BroadcastReceiver类:
view plaincopy to clipboardprint?
package com.hwttnet.test.smsreceiveandmask; 
import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.telephony.SmsMessage; 
import android.util.Log; 
public
class smsreceiveandmask extends BroadcastReceiver { 
    private String TAG = "smsreceiveandmask"; 
    @Override

    public
void onReceive(Context context, Intent intent) { 
        Log.v(TAG, ">>>>>>>onReceive start"); 
        // 第一步、获取短信的内容和发件人

        StringBuilder body = new StringBuilder();// 短信内容

        StringBuilder number = new StringBuilder();// 短信发件人

        Bundle bundle = intent.getExtras(); 
        if (bundle != null) { 
            Object[] _pdus = (Object[]) bundle.get("pdus"); 
            SmsMessage[] message = new SmsMessage[_pdus.length]; 
            for (int i = 0; i < _pdus.length; i++) { 
                message = SmsMessage.createFromPdu((byte[]) _pdus); 
            } 
            for (SmsMessage currentMessage : message) { 
                body.append(currentMessage.getDisplayMessageBody()); 
                number.append(currentMessage.getDisplayOriginatingAddress()); 
            } 
            String smsBody = body.toString(); 
            String smsNumber = number.toString(); 
            if (smsNumber.contains("+86")) { 
                smsNumber = smsNumber.substring(3); 
            } 
            // 第二步:确认该短信内容是否满足过滤条件

            boolean flags_filter = false; 
            if (smsNumber.equals("10086")) {// 屏蔽10086发来的短信

                flags_filter = true; 
                Log.v(TAG, "sms_number.equals(10086)"); 
            } 
            // 第三步:取消

            if (flags_filter) { 
                this.abortBroadcast(); 
            } 
        } 
        Log.v(TAG, ">>>>>>>onReceive end"); 
    } 

  凌阳教育“学员就业 双100%”的诚信获得了社会的广泛认可,2008年、2009年、2010年,凌阳教育连续三年荣膺新浪“中国十大品牌IT教育机构”、新浪“最具就业 竞争力IT教育机构”、搜狐“中国十大品牌IT培训机构”、网易“中国十大IT教育品牌”荣誉称号。凌阳教育是嵌入式培训领域,唯一全部获得三大门户网站 “十大IT品牌”表彰的机构。

嵌入式培训

凌阳教育嵌入式培训,值得信赖的嵌入式教育品牌!
   http://www.sunplusedu.com/content3559.shtml

点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 2

    评论
  • 1927

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-14 23:03 , Processed in 0.024239 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部