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

2024-03-17 21:32

本文主要是介绍[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;@Overrideprotected 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 {@Overridepublic int getCount() {// TODO Auto-generated method stubreturn infos.size();}@Overridepublic 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;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 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);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("create table blacknumber (id integer primary key autoincrement,phone varchar(20),mode varchar(2))");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}}

 

 

这篇关于[android] 手机卫士黑名单功能(列表展示)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/820235

相关文章

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

Python 常用数据类型详解之字符串、列表、字典操作方法

《Python常用数据类型详解之字符串、列表、字典操作方法》在Python中,字符串、列表和字典是最常用的数据类型,它们在数据处理、程序设计和算法实现中扮演着重要角色,接下来通过本文给大家介绍这三种... 目录一、字符串(String)(一)创建字符串(二)字符串操作1. 字符串连接2. 字符串重复3. 字

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

C#实现高性能拍照与水印添加功能完整方案

《C#实现高性能拍照与水印添加功能完整方案》在工业检测、质量追溯等应用场景中,经常需要对产品进行拍照并添加相关信息水印,本文将详细介绍如何使用C#实现一个高性能的拍照和水印添加功能,包含完整的代码实现... 目录1. 概述2. 功能架构设计3. 核心代码实现python3.1 主拍照方法3.2 安全HBIT

录音功能在哪里? 电脑手机等设备打开录音功能的技巧

《录音功能在哪里?电脑手机等设备打开录音功能的技巧》很多时候我们需要使用录音功能,电脑和手机这些常用设备怎么使用录音功能呢?下面我们就来看看详细的教程... 我们在会议讨论、采访记录、课堂学习、灵感创作、法律取证、重要对话时,都可能有录音需求,便于留存关键信息。下面分享一下如何在电脑端和手机端上找到录音功能

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转