先把要拦截的电话号码保存到数据库中,拦截模式用个字段区分,1 电话拦截,2 短信拦截,3全部拦截
新建Activity类CallSmsSafeActivity.java
新建布局文件activity_call_sms_safe.xml
在布局文件中添加<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; java.util.Map; androID.app.Activity; androID.os.Bundle; androID.vIEw.VIEw; androID.vIEw.VIEwGroup; androID.Widget.BaseAdapter; androID.Widget.ListVIEw; androID.Widget.TextVIEw; 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 BaseAdapter { @OverrIDe int getCount() { Todo auto-generated method stub return infos.size(); } @OverrIDe public VIEw getVIEw( position,VIEw convertVIEw,VIEwGroup parent) { VIEw vIEw = VIEw.inflate(CallSmsSafeActivity.,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("短信拦截"case "3": modeVIEw.setText("全部拦截"default: ; } vIEw; } @OverrIDe public Object getItem( position) { return ; } @OverrIDe long getItemID(return 0; } }}
BlackNumberAdo.java
com.qingguow.mobilesafe.db.ado; java.util.ArrayList; java.util.HashMap; androID.content.ContentValues; androID.content.Context; androID.database.Cursor; androID.database.sqlite.sqliteDatabase; com.qingguow.mobilesafe.db.BlackNumberDBOpenHelper;class BlackNumberAdo { BlackNumberDBOpenHelper helper; public BlackNumberAdo(Context context) { helper= BlackNumberDBOpenHelper(context); } * 插入数据 * @param phone * mode */ add(String phone,String mode) { sqliteDatabase db=helper.getWritableDatabase(); ContentValues values= ContentValues(); values.put("phone" * 查询全部 * @return public List<Map<String,1)"> findAll(){ sqliteDatabase db=helper.getReadableDatabase(); Cursor cursor=db.rawquery("select phone,mode from blacknumber",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" 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[]{phone}); db.close(); }}
BlackNumberDBOpenHelper.java
com.qingguow.mobilesafe.db; androID.database.sqlite.sqliteDatabase; androID.database.sqlite.sqliteDatabase.CursorFactory; androID.database.sqlite.sqliteOpenHelper; * 黑名单数据库帮助类 * * class BlackNumberDBOpenHelper sqliteOpenHelper { BlackNumberDBOpenHelper(Context context) { super(context,"blacknumber",1)">null,1); } @OverrIDe onCreate(sqliteDatabase db) { db.execsql("create table blacknumber (ID integer primary key autoincrement,mode varchar(2))"voID onUpgrade(sqliteDatabase db,1)">int oldVersion,1)"> newVersion) { }}
总结
以上是内存溢出为你收集整理的[android] 手机卫士黑名单功能(列表展示)全部内容,希望文章能够帮你解决[android] 手机卫士黑名单功能(列表展示)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)