黑名单功能
步骤: 1、定义黑名单添加界面:CallSmsSafeActivity.java 电话短信防卫,复写onCreate()方法 2、在清单文件中进行CallSmsSa feActivity配置 3、定义CallSmsSafeActivity布局文件activity_callsms_safe.xml 4、由于黑名单可能很多,所以创建数据库blacklist来保存黑名单 所以,创建一个android.database.sqlite.SQLiteOpenHelper来初始化数据库 创建表: create table blacknumber ( id integer primary key autoincrement, --id主键,唯一标识 numbervarchar(20), --要加入黑名单的号码 mode varchar(2) --1 电话拦截 2短信拦截 3全部拦截 ) 5、在dao层,创建一个对黑名单数据库blacklist来进行增删改查 6、测试数据库是否可以创建 7、最后在 CallSmsSafeActivity中设置黑名单的数据适配器 |
核心代码: 1、 BlackNumberDBOpenHelper.java 创建黑名单数据库
package cn.zengfansheng.mobilesafe.db.dao;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import cn.zengfansheng.mobilesafe.db.BlackNumberDBOpenHelper;
import cn.zengfansheng.mobilesafe.domain.BlackNumberInfo;
/**
* 3、黑名单DAO
* @author hacket
*/
public class BlackNumberDao {
private BlackNumberDBOpenHelper helper;
private final String TABLE = "blacknumber";
public BlackNumberDao(Context context) {
helper = new BlackNumberDBOpenHelper(context);
}
/**
* 1、往数据库中插入黑名单
*
* @param number 要插入的黑名单号码
* @param mode 模式,1为电话,2为短信,3为全部
* @return 返回插入到数据库哪一行,
*/
public long add(String number, String mode) {
// 1、获取数据库
SQLiteDatabase database = helper.getWritableDatabase();
// 2、插入数据到数据库
ContentValues values = new ContentValues();
values.put("number", number);
values.put("mode", mode);
long insert = database.insert(TABLE, null, values);// 返回插入数据的行号
// 3、关闭数据库
database.close();
return insert;
}
/**
* 2、从数据库中删除黑名单
* @param number 要删除的黑名单号码
* @return 返回受影响的行数
*/
public long delete(String number) {
SQLiteDatabase database = helper.getWritableDatabase();
int delete = database.delete(TABLE, "number=?", new String[]{number});
database.close();
return delete;
}
/**
* 3、修改数据库中黑名单的信息
* @param number 要修改的黑名单号码
* @param newMode 修改成新的模式
* @return 返回受影响的行
*/
public long update(String number,String newMode) {
SQLiteDatabase database = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("number", number);
values.put("mode", newMode);
int update = database.update(TABLE, values, "number=?", new String[] {number});
database.close();
return update;
}
/**
* 4、从数据库中查询所有黑名单信息
* @param number 要查询的黑名单号码
* @return 如果查询有记录,返回BlackNumberInfo,否则返回null。
*/
public BlackNumberInfo find (String number){
SQLiteDatabase database = helper.getReadableDatabase();
Cursor cursor = database.query(TABLE, null, "number=?", new String[]{number}, null, null, null);
BlackNumberInfo blackNumberInfo = null;
if (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex("id"));
String mynumber = cursor.getString(cursor.getColumnIndex("number"));
String mode = cursor.getString(cursor.getColumnIndex("mode"));
blackNumberInfo = new BlackNumberInfo(id, mynumber, mode);
}
return blackNumberInfo;
}
/**
* 5、从数据库中查询所有黑名单信息
* @return 返回所有查询到的黑名单信息
*/
public List<BlackNumberInfo> getBlackNumberInfos() {
List<BlackNumberInfo> numberInfos = new ArrayList<BlackNumberInfo>();
SQLiteDatabase database = helper.getReadableDatabase();
Cursor cursor = database.query(TABLE, null, null, null, null, null, null);
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex("id"));
String number = cursor.getString(cursor.getColumnIndex("number"));
String mode = cursor.getString(cursor.getColumnIndex("mode"));
BlackNumberInfo blackNumberInfo = new BlackNumberInfo(id,number,mode);
numberInfos.add(blackNumberInfo);
}
return numberInfos;
}
} 3、
CallSmsSafeActivity.java 设置黑名单数据到界面展示
|
界面展示: |
|