[android] 手机卫士黑名单功能(列表展示)详解手机开发

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

 

新建ActivityCallSmsSafeActivity.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()方法,参数:Stringsql语句(例如: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包,新建一个业务beanBlackNumberInfo

while循环Cursor对象调用moveToNext()

返回List集合

 

插入一条

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

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

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

获取ContentValues对象,new出来

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

 

修改记录

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

调用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) { 
 
    } 
 
}

 

[android] 手机卫士黑名单功能(列表展示)详解手机开发 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/5397.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论