前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[android] 手机卫士黑名单功能(列表展示)

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

作者头像
唯一Chat
发布2019-09-10 15:38:23
6210
发布2019-09-10 15:38:23
举报
文章被收录于专栏:陶士涵的菜地陶士涵的菜地

先把要拦截的电话号码保存到数据库中,拦截模式用个字段区分,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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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) {

    }

}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-05-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
短信
腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档