你的位置:首页 > 操作系统

[操作系统][android] 手机卫士黑名单功能(列表展示)


先把要拦截的电话号码保存到数据库中,拦截模式用个字段区分,1 电话拦截,2 短信拦截,3全部拦截

 

新建Activity类CallSmsSafeActivity.java

新建布局文件activity_call_sms_safe.

列表展示所有的黑名单手机号码

在布局文件中添加<ListView>控件,定义一个id

获取ListView对象

调用ListView对象的setAdapter()方法,参数:ListAdapter对象

 

定义内部类CallSmsSafeAdapter继承系统的BaseAdapter

实现四个方法,重要的有两个getCount()和getView()

实现getCount()方法,返回集合的长度

实现getView()方法

调用View.inflate()方法,转换布局文件为View对象,参数:上下文,布局资源,null

查找到相应的控件,设置文件

 

 

数据库操作

在db包下新建一个BlackNumberDBOpenHelper类继承SQLiteOpenHelper类

实现构造方法

调用父类的构造方法,super(),参数:上下文,数据库名称,游标工厂(null),版本号(1)

 

重写onCreate()方法,传递进来参数SQLiteDatabase对象

调用SQLiteDatabase对象的execSQL()方法,参数:String的sql语句(例如:create table blacknumber (id integer primary key autoincrement,phone varchar(20) ,mode varchar(2)) )

重写onUpgrade()方法

 

dao类

在db.dao包下新建一个BlackNumberDao类

定义构造方法,传递进来参数:Context对象

获取BlackNumberDBOpenHelper对象,参数:Context对象

 

查询单条

定义方法find(),查询一条记录,参数:String类型电话号码

调用helper对象的getReadableDatabase()方法,获取到SQLiteDatabase对象

调用SQLiteDatabase对象的rawQuery()方法,获取到Cursor对象,参数:String类型SQL语句,String[]参数值数组

调用Cursor对象的moveToNext()方法,如果为真,说明有数据,

调用Cursor对象的getString()方法,获取到值,参数:字段索引

返回Map集合

 

查询全部

定义方法findAll(),查询全部数据

调用helper对象的getReadableDatabase()方法,获取到SQLiteDatabase对象

调用SQLiteDatabase对象的rawQuery()方法,获取到Cursor对象,参数:String类型SQL语句

新建一个domain包,新建一个业务bean,BlackNumberInfo类

while循环Cursor对象调用moveToNext()

返回List集合

 

插入一条

定义方法add(),插入一条记录,参数:String电话号码,String的mode模式

调用helper对象的getWritableDatabase()方法,获取到SQLiteDatabase对象

调用SQLiteDatabase对象的insert()方法,插入一条记录,参数:String表名,允许为null的列,ContentValues对象

获取ContentValues对象,new出来

调用ContentValues对象的put()方法,参数:key,value

 

修改记录

定义方法update(),修改记录,参数:String电话号码,String的mode模式

调用helper对象的getWritableDatabase()方法,获取到SQLiteDatabase对象

调用SQLiteDatabase对象的update()方法,修改表记录,参数:String表名,ContentValues对象,String的条件(“number=?”),String[]参数值数组

 

删除记录

定义delete()方法,删除记录,参数:String电话号码

调用helper对象的getWritableDatabase()方法,获取到SQLiteDatabase对象

调用SQLiteDatabase对象的delete()方法,删除表记录,参数:String表名,String的条件(“number=?”),String[]参数值数组

调用SQLiteDatabase对象的close()方法,关闭数据库

 

CallSmsSafeActivity.java

 

package com.qingguow.mobilesafe;import java.util.List;import java.util.Map;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;import com.qingguow.mobilesafe.db.ado.BlackNumberAdo;/** * 通讯卫士 * * @author taoshihan * */public class CallSmsSafeActivity extends Activity {  private ListView listview;  private List<Map<String, String>> infos;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_call_sms_safe);    listview = (ListView) findViewById(R.id.lv_blacknumber);        BlackNumberAdo ado = new BlackNumberAdo(this);    infos = ado.findAll();    listview.setAdapter(new MyAdapter());    // //添加100条测试数据    // Random random=new Random();    // for(int i=1;i<=100;i++){    // ado.add("18805419000"+i, String.valueOf(random.nextInt(3)+1));    // }      }  private class MyAdapter extends BaseAdapter {    @Override    public int getCount() {      // TODO Auto-generated method stub      return infos.size();    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {      View view = View.inflate(CallSmsSafeActivity.this,          R.layout.list_call_sms_safe_item, null);      TextView phoneView = (TextView) view          .findViewById(R.id.tv_main_phone);      TextView modeView = (TextView) view          .findViewById(R.id.tv_block_mode);      phoneView.setText(infos.get(position).get("phone"));      switch (infos.get(position).get("mode")) {      case "1":        modeView.setText("电话拦截");        break;      case "2":        modeView.setText("短信拦截");        break;      case "3":        modeView.setText("全部拦截");        break;      default:        break;      }            return view;    }    @Override    public Object getItem(int position) {      // TODO Auto-generated method stub      return null;    }    @Override    public long getItemId(int position) {      // TODO Auto-generated method stub      return 0;    }  }}

 

BlackNumberAdo.java

package com.qingguow.mobilesafe.db.ado;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import com.qingguow.mobilesafe.db.BlackNumberDBOpenHelper;public class BlackNumberAdo {  private BlackNumberDBOpenHelper helper;  public BlackNumberAdo(Context context) {    helper=new BlackNumberDBOpenHelper(context);  }  /**   * 插入数据   * @param phone   * @param mode   */  public void add(String phone,String mode) {    SQLiteDatabase db=helper.getWritableDatabase();    ContentValues values=new ContentValues();    values.put("phone", phone);    values.put("mode", mode);    db.insert("blacknumber", null, values);    db.close();  }  /**   * 查询全部   * @return   */  public List<Map<String,String>> findAll(){    SQLiteDatabase db=helper.getReadableDatabase();    Cursor cursor=db.rawQuery("select phone,mode from blacknumber", null);    List<Map<String,String>> list=new ArrayList<Map<String,String>>();    while(cursor.moveToNext()){      Map<String,String> info=new HashMap<String, String>();      String phone=cursor.getString(0);      String mode=cursor.getString(1);      info.put("phone", phone);      info.put("mode", mode);      list.add(info);    }    cursor.close();    db.close();    return list;  }  /**   * 修改数据   * @param phone   * @param mode   */  public void update(String phone,String mode) {    SQLiteDatabase db=helper.getWritableDatabase();    ContentValues values=new ContentValues();    values.put("phone", phone);    values.put("mode", mode);    db.update("blacknumber", values,"phone=?",new String[]{phone});    db.close();  }  /**   * 删除数据   * @param phone   */  public void delete(String phone){    SQLiteDatabase db=helper.getWritableDatabase();    db.delete("blacknumber", "phone=?", new String[]{phone});    db.close();  }}

 

 

BlackNumberDBOpenHelper.java

package com.qingguow.mobilesafe.db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;/** * 黑名单数据库帮助类 * * @author taoshihan * */public class BlackNumberDBOpenHelper extends SQLiteOpenHelper {  public BlackNumberDBOpenHelper(Context context) {    super(context, "blacknumber", null, 1);  }  @Override  public void onCreate(SQLiteDatabase db) {    db.execSQL("create table blacknumber (id integer primary key autoincrement,phone varchar(20),mode varchar(2))");  }  @Override  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  }}