Android 利用广播实现黑名单【指定号码】的短信的拦截 附源码下载链接

本文介绍如何在Android中使用广播实现指定电话号码的短信拦截。通过创建数据库管理保护联系人,并静态注册广播接收器来拦截匹配号码的短信,将其存储到特定数据库而非系统收件箱。
摘要由CSDN通过智能技术生成

Android 利用广播实现指定号码的短信的拦截

根据最近的学习内容,今天实现了利用广播进行指定号码的拦截

步骤:
①、写一个数据库的帮助类,实现对数据库的创建,总共创建两个数据库psms(受保护的短信的数据库)和protectedPhone(受保护的联系人数据库),粘代码:

public class DBHelper extends SQLiteOpenHelper {
   
    private static final String DB_NAME = "protectedSMS.db";
    private static final int DB_VERSION = 2;

    public DBHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        String sql = "create table psms(_id integer primary key autoincrement,address varchar(20),type integer,state integer,body varchar(500),date varchar(20),person varchar(20))";
        String sql1 = "create table protectedPhone(_id integer primary key autoincrement,person varchar(20),phone varchar(20))";
        db.execSQL(sql);
        db.execSQL(sql1);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }

}

②、写一个类对数据库的增删改查进行封装,代码及注释如下:

/**
 * 封装DAO,对数据库进制crud操作
 * 
 * @author Administrator
 *
 */
public class ProtectedDAO {
   
    private SQLiteDatabase db;

    public ProtectedDAO(Context context) {
        DBHelper helper = new DBHelper(context);
        db = helper.getWritableDatabase();
    }

    /**
     * 插入数据到中
     * 
     * @param table
     *            表名
     * @param values
     *            对应的键和值
     * @return 行号
     */
    public long insert(String table, ContentValues values) {
        // String sql = "insert into person(name,age) values('zhangsan',21)";
        // db.execSQL(sql);
        return db.insert(table, null, values);
    }

    /**
     * 更新表中的数据
     * 
     * @param table
     *            表名
     * @param values
     *            修改后的值
     * @param whereClause
     *            条件语句可以使用占位符 ?
     * @param whereArgs
     *            使用该数组中的值替换占位符
     * @return 受影响数据表的行数
     */
    public int update(String table, ContentValues values, String whereClause,
            String[] whereArgs) {
        return db.update(table, values, whereClause, whereArgs);
    }

    /**
     * 
     * 删除表中的数据
     * 
     * @param table
     *            表名
     * @param whereClause
     *            条件语句,可以使用占位符
     * @param whereArgs
     *            使用该数组中的值替换占位符
     * @return 受影响数据的行数
     */
    public int delete(String table, String whereClause, String[] whereArgs) {
        return db.delete(table, whereClause, whereArgs);
    }

    /**
     * 查询数据
     * 
     * @param sql
     *            sql语句,查询语句,可以包含条件,sql语句不用使用分号结尾,系统自动添加
     * @param selectionArgs
     *            sql的查询条件可以使用占位符,占位符可以使用selectionArgs的值替代
     * @return Cursor 游标,可以比作结果集
     */
    public Cursor select(String sql, String[] selectionArgs) {
        return db.rawQuery(sql, selectionArgs);
    }

    /**
     * 查询数据
     * 
     * @param table
     *            表名
     * @param columns
     *            查询的列(字段)
     * @param selection
     *            where后的条件子句,可以使用占位符
     * @param selectionArgs
     *            替换占位符的值,
     * @param groupBy
     *            根据某个字段进行分组
     * @param having
     *            分组之后再进一步过滤
     * @param orderBy
     *            排序
     * @return Cursor 游标,可以比作结果集
     */
    public Cursor select(String table, String[] columns, String selection,
            String[] selectionArgs, String groupBy, String having,
            String orderBy) {

        // distinct: 消除重复数据项(去掉重复项)
        // 1、table: 表名
        // 2、columns: 查询的列(字段)
        // 3、selection: where后的条件子句,可以使用占位符
        // 4、selectionArgs: 替换占位符的值
        // 5、groupBy: 根据某个字段进行分组
        // 6、having: 分组之后再进一步过滤
        // 7、orderBy: 排序
        // limit: 进行分页查询
        return db.query(table, c
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值