[android] 手机卫士黑名单功能(短信拦截)

[android] 手机卫士黑名单功能(短信拦截),第1张

概述前面我们把需要拦截的手机号都存储和展示出来了,接下来是使用广播接收者拦截短信了,这个广播接收者需要和一个服务绑定,服务开启的时候,接收者存在,服务停掉时,接收者关闭 在service包下定义一个类Ca

前面我们把需要拦截的手机号都存储和展示出来了,接下来是使用广播接收者拦截短信了,这个广播接收者需要和一个服务绑定,服务开启的时候,接收者存在,服务停掉时,接收者关闭

 

service包下定义一个类CallSmsSafeService继承系统的Service

重写onCreate()方法

获取broadcastReceiver对象,new出来

调用registerReceiver()方法,注册广播,参数:broadcastReceiver对象,IntentFillter对象

 

 

重写onDestory()方法

调用unregisterReceiver()方法,参数:broadcastReceiver对象

broadcastReceiver对象置为null

 

定义一个内部类InnerSmsReceiver继承系统的broadcastReceiver

重写 onReceive()方法,传递进来参数:Context对象,Intent对象

调用Intent对象的getExtras().get(“pdus”)方法,获取到Object[]数组

for循环Object[]数组,每个是Object对象

调用SmsMessage.createFromPdu()方法,获取到SmsMessage对象,参数:byte[]数组,强转Object对象

调用SmsMessage对象的getoriginatingAddress()方法,得到String发件人

调用Dao对象的查询数据库方法,查出这条短信的拦截模式

判断拦截模式,如果是全部拦截3或者短信拦截2,就调用abortbroadcast()方法

 

 

在设置中心对上面的服务进行配置,达到开启和关闭的功能

查看这篇:http://www.cnblogs.com/taoshihan/p/5468523.html

 

 CallSmsSafeService.java

package com.qingguow.mobilesafe.service;import androID.app.Service; androID.content.broadcastReceiver; androID.content.Context; androID.content.Intent; androID.content.IntentFilter; androID.os.IBinder; androID.telephony.SmsMessage; com.qingguow.mobilesafe.db.ado.BlackNumberAdo;/** * 短息电话拦截服务 * @author taoshihan * */public class CallSmsSafeService extends Service {    private InnerSmsReceiver receiver;     BlackNumberAdo ado;    @OverrIDe    public IBinder onBind(Intent intent) {        // Todo auto-generated method stub        return null;    }         * 服务创建     */    @OverrIDe    voID onCreate() {        receiver=new InnerSmsReceiver();        IntentFilter filter=new IntentFilter("androID.provIDer.Telephony.SMS_RECEIVED");        ado= BlackNumberAdo(getApplicationContext());        registerReceiver(receiver,filter);        super.onCreate();    }         * 接收广播     *  taoshihan     *     */    private class InnerSmsReceiver  broadcastReceiver{        @OverrIDe         onReceive(Context context,Intent intent) {            Object[] obJs=(Object[]) intent.getExtras().get("pdus");            for(Object obj:obJs){                SmsMessage sms=SmsMessage.createFromPdu((byte[]) obj);                String sender=sms.getoriginatingAddress();                                String mode=ado.find(sender);                if(mode!=){                    if (mode.equals("2") || mode.equals("3")) {                        System.out.println("拦截短信:" + sender);                        abortbroadcast();                    }                }                            }        }            }    @OverrIDe     onDestroy() {        unregisterReceiver(receiver);        receiver=;        .onDestroy();    }}

ado类

 com.qingguow.mobilesafe.db.ado; java.util.ArrayList; java.util.HashMap; java.util.List; java.util.Map; androID.content.ContentValues; androID.database.Cursor; androID.database.sqlite.sqliteDatabase; com.qingguow.mobilesafe.db.BlackNumberDBOpenHelper;class BlackNumberAdo {     BlackNumberDBOpenHelper helper;     BlackNumberAdo(Context context) {        helper =  BlackNumberDBOpenHelper(context);    }         * 插入数据     *      * @param phone     *  mode      add(String phone,String mode) {        sqliteDatabase db = helper.getWritableDatabase();        ContentValues values =  ContentValues();        values.put("phone",phone);        values.put("mode"     * 查询全部     *      * @return     public List<Map<String,String>> findAll() {        sqliteDatabase db = helper.getReadableDatabase();        Cursor cursor = db.rawquery(                "select phone,mode from blacknumber order by ID desc",1)">);        List<Map<String,String>> List = new ArrayList<Map<String,1)">();        while (cursor.movetoNext()) {            Map<String,String> info = new HashMap<String,String>();            String phone = cursor.getString(0);            String mode = cursor.getString(1);            info.put("phone"return List;    }         * 修改数据     *      *  update(String phone,mode);        db.update("blacknumber",values,"phone=?",1)"> String[] { phone });        db.close();    }         * 删除数据     *      *  phone      delete(String phone) {        sqliteDatabase db = helper.getWritableDatabase();        db.delete("blacknumber",1)">     * 查找单条     *      *  String find(String phone) {        sqliteDatabase db = db.rawquery(                "select mode from blacknumber where phone=?" String[] { phone });        if (cursor.movetoNext()) {            String mode = cursor.getString(0 mode;        }        ;    }}

 

总结

以上是内存溢出为你收集整理的[android] 手机卫士黑名单功能(短信拦截)全部内容,希望文章能够帮你解决[android] 手机卫士黑名单功能(短信拦截)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1121175.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存