您的位置:笔笔发 SOHO人家 嵌入式操作系统领域 正文
内容搜索
笔笔发:技术产业信息平台----成就有识之士创业梦想的殿堂
热门内容
推荐内容
【凌阳教育学堂】Android拦截短信并屏蔽Notification


来源: 凌阳教育嵌入式培训

  凌阳教育是全国唯一 “学员就业双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

 
点这里复制本页地址发送给您QQ/MSN上的好友
相关文章

【凌阳教育学堂】Android开发中多线程及异步
【凌阳教育学堂】Android开发中进程等级相关
【凌阳教育学堂】Android开发中ANR与Monkey
【凌阳教育学堂】Android开发Info类总结
【凌阳教育学堂】Android开发实现HttpClien
【凌阳教育学堂】Android开发获得多媒体信息
【凌阳教育学堂】Android开发中webService接
【凌阳教育学堂】Android开发返回拍摄的图片
【凌阳教育学堂】Android数据存储SQLite的事
【凌阳教育学堂】Android开发给TextView添加
【凌阳教育学堂】Android ListPreference的
【凌阳教育学堂】Android开发中使用第三方j
郑州--深圳嵌入式实训 嵌入式方案解决您一站
WINCE系统手持pos机 - PDA打印功能手持终端
学习嵌入式系统开发需要具备哪些条件?

相关评论


本文章所属分类:首页 SOHO人家 嵌入式操作系统领域


反馈意见和建议