Android——黑名单

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.hanqi.blacklist.MainActivity"
11     android:orientation="vertical">
12
13     <ListView
14         android:layout_width="match_parent"
15         android:layout_height="0dp"
16         android:layout_weight="1"
17         android:id="@+id/lv_1">
18     </ListView>
19     <Button
20         android:layout_width="match_parent"
21         android:layout_height="wrap_content"
22         android:text="添加黑名单"
23         android:onClick="add_onClick"/>
24 </LinearLayout>

activity_main

 1 package com.hanqi.blacklist.com.hanqi.blacklist.orm;
 2
 3 /**
 4  * Created by lenovo on 2016/6/6.
 5  */
 6 //实体类
 7 public class BlacList {
 8
 9     private long id;
10     private String phoneNumber;
11
12     public long getId() {
13         return id;
14     }
15
16     public void setId(long id) {
17         this.id = id;
18     }
19
20     public String getPhoneNumber() {
21         return phoneNumber;
22     }
23
24     public void setPhoneNumber(String phoneNumber) {
25         this.phoneNumber = phoneNumber;
26     }
27
28     public BlacList(long id, String phoneNumber) {
29         this.id = id;
30         this.phoneNumber = phoneNumber;
31     }
32
33     public BlacList(String phoneNumber) {
34         this.phoneNumber = phoneNumber;
35     }
36 }

BlacList

 1 package com.hanqi.blacklist.com.hanqi.blacklist.orm;
 2
 3 import android.content.ContentValues;
 4 import android.content.Context;
 5 import android.database.Cursor;
 6 import android.database.sqlite.SQLiteDatabase;
 7
 8 import java.util.ArrayList;
 9
10 /**
11  * Created by lenovo on 2016/6/6.
12  */
13 //数据库操作类
14 public class BlackListDAO {
15
16     //private Context context;
17     private final String TABLE_NAME = "t_blacklist";
18     private DBHelper dh;
19
20     public BlackListDAO(Context context)
21     {
22         //this.context = context;
23         dh = new DBHelper(context);
24     }
25     //增
26     //传入参数:实体类的实例
27     public long insert(BlacList blacList)
28     {
29         long rtn = 0;
30         //链接数据库
31         SQLiteDatabase sd = dh.getWritableDatabase();
32         //执行insert语句
33         //insert into t_blacklist (phone_number) values ()
34         ContentValues cv = new ContentValues();
35         cv.put("phone_number",blacList.getPhoneNumber());
36         rtn = sd.insert("t_blacklist",null,cv);
37         sd.close();
38         return rtn;
39     }
40     //删
41     public int delete(long id)
42     {
43         int rtn = 0;
44         //链接数据库
45         SQLiteDatabase sd = dh.getWritableDatabase();
46         //delete from t_blacklist where _id = ?
47         rtn = sd.delete(TABLE_NAME,"_id = ?",new String[]{id+""});
48         sd.close();
49         return rtn;
50     }
51     //改
52     public int update(BlacList blacList)
53     {
54         int rtn = 0;
55         //链接数据库
56         SQLiteDatabase sd = dh.getWritableDatabase();
57         //update t_blacklist set phone_number = ? where _id = ?
58         ContentValues cv = new ContentValues();
59         cv.put("phone_number",blacList.getPhoneNumber());
60         rtn = sd.update(TABLE_NAME,cv,"_id =?",new String[]{blacList.getId()+""});
61         sd.close();
62         return rtn;
63     }
64     //查
65     //返回查询结果
66     public ArrayList<BlacList> getAll()
67     {
68         ArrayList<BlacList> blacLists = new ArrayList<>();
69         //链接数据库
70         SQLiteDatabase sd = dh.getWritableDatabase();
71         //select * from t_blacklist
72         //查询之后得到游标结果集
73         Cursor cursor = sd.query(TABLE_NAME, null, null, null, null, null, "_id desc");
74         //遍历结果集
75         while (cursor.moveToNext())
76         {
77             //1.把数据转成实体类的实例
78             BlacList blacList = new BlacList(cursor.getLong(0),cursor.getString(1));
79             //2.把实例放在集合里,返回这个集合
80             blacLists.add(blacList);
81         }
82         cursor.close();
83         sd.close();
84         //返回这个集合
85         return blacLists;
86     }
87 }

BlackListDAO

 1 package com.hanqi.blacklist.com.hanqi.blacklist.orm;
 2
 3 import android.content.Context;
 4 import android.database.sqlite.SQLiteDatabase;
 5 import android.database.sqlite.SQLiteOpenHelper;
 6 import android.util.Log;
 7
 8 /**
 9  * Created by lenovo on 2016/6/7.
10  */
11 public class DBHelper extends SQLiteOpenHelper {
12
13     public DBHelper(Context context) {
14         super(context, "blacklist.db", null, 1);
15     }
16
17     @Override
18     public void onCreate(SQLiteDatabase db) {
19
20         //1.执行创建数据库的语句
21         String sql = "CREATE TABLE t_blacklist " +
22                 "(_id  INTEGER NOT NULL," +
23                 "phone_number  VARCHAR(20) NOT NULL,"
24                 +"PRIMARY KEY (\"_id\"))";
25         db.execSQL(sql);
26         Log.e("TAG", "表创建成功");
27     }
28
29     @Override
30     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
31
32     }
33 }

DBHelper

  1 package com.hanqi.blacklist;
  2
  3 import android.app.AlertDialog;
  4 import android.content.DialogInterface;
  5 import android.os.Bundle;
  6 import android.support.v7.app.AppCompatActivity;
  7 import android.text.InputType;
  8 import android.view.ContextMenu;
  9 import android.view.MenuItem;
 10 import android.view.View;
 11 import android.view.ViewGroup;
 12 import android.widget.AdapterView;
 13 import android.widget.BaseAdapter;
 14 import android.widget.EditText;
 15 import android.widget.ListView;
 16 import android.widget.TextView;
 17 import android.widget.Toast;
 18
 19 import com.hanqi.blacklist.com.hanqi.blacklist.orm.BlacList;
 20 import com.hanqi.blacklist.com.hanqi.blacklist.orm.BlackListDAO;
 21
 22 import java.util.ArrayList;
 23
 24 public class MainActivity extends AppCompatActivity {
 25
 26     ListView lv_1;
 27     //数据访问对象
 28     BlackListDAO bld = new BlackListDAO(this);
 29     //数据集合
 30     ArrayList<BlacList> alb;
 31
 32     BLAdapter bla;
 33
 34     //长按数据的索引
 35     int index;
 36
 37     @Override
 38     protected void onCreate(Bundle savedInstanceState) {
 39         super.onCreate(savedInstanceState);
 40         setContentView(R.layout.activity_main);
 41         lv_1 = (ListView)findViewById(R.id.lv_1);
 42         //增加上下文菜单,设置创建上下文菜单的监听器
 43         lv_1.setOnCreateContextMenuListener(this);
 44         //获取数据集合
 45         alb = bld.getAll();
 46         //显示数据
 47         //adapter
 48         bla = new BLAdapter();
 49         lv_1.setAdapter(bla);
 50     }
 51     //重写创建上下文菜单的方法
 52     @Override
 53     public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
 54         super.onCreateContextMenu(menu, v, menuInfo);
 55         menu.add(0, 1, 1, "修改");
 56         menu.add(0, 2, 2, "删除");
 57         //获取长按的数据信息
 58         //1.得到菜单信息
 59         AdapterView.AdapterContextMenuInfo acmi =
 60                 (AdapterView.AdapterContextMenuInfo)menuInfo;
 61         //2.得到数据在集合中的索引
 62         index = acmi.position;
 63     }
 64     //响应菜单点击的回调方法
 65     @Override
 66     public boolean onContextItemSelected(MenuItem item) {
 67
 68         switch (item.getItemId())
 69         {
 70             case 1:
 71                 //修改
 72                 final EditText editText = new EditText(this);
 73                 editText.setHint("输入电话号码");
 74                 editText.setInputType(InputType.TYPE_CLASS_PHONE);
 75                 editText.setText(alb.get(index).getPhoneNumber());
 76                 new AlertDialog.Builder(this)
 77                         .setTitle("修改")
 78                         .setView(editText)
 79                         .setCancelable(false)
 80                         .setNegativeButton("取消", null)
 81                         .setPositiveButton("确定", new DialogInterface.OnClickListener() {
 82                             @Override
 83                             public void onClick(DialogInterface dialog, int which) {
 84 //                                BlacList blacList = new BlacList(alb.get(index).getId(),editText.getText().toString());
 85 //                                bld.update(blacList);
 86 //                                alb = bld.getAll();
 87 //                                bla.notifyDataSetChanged();
 88                                 //1.得到新数据的实体类
 89                                 //赋值:
 90                                 // 1)传值,复制新的值再传递,值类型;
 91                                 // 2)传址,传递的是内存的地址,指向同一个对象,引用类型
 92                                 BlacList blaclist = alb.get(index);
 93                                 blaclist.setPhoneNumber(editText.getText().toString());
 94                                 //2.调用DAO的update()
 95                                 if (bld.update(blaclist)>0)
 96                                 {
 97                                     Toast.makeText(MainActivity.this, "修改成功", Toast.LENGTH_SHORT).show();
 98
 99                                     bla.notifyDataSetChanged();
100                                 }
101                                 else
102                                 {
103                                     Toast.makeText(MainActivity.this, "修改失败", Toast.LENGTH_SHORT).show();
104                                 }
105                             }
106                         })
107                         .show();
108                 break;
109             case 2:
110                 //添加删除确认对话框
111                 //删除
112                 new AlertDialog.Builder(this)
113                         .setTitle("确认对话框")
114                         .setMessage("确认删除么?")
115                         .setNegativeButton("取消", null)
116                         .setPositiveButton("确认", new DialogInterface.OnClickListener() {
117                             @Override
118                             public void onClick(DialogInterface dialog, int which) {
119                                 bld.delete(alb.get(index).getId());
120                                 Toast.makeText(MainActivity.this, "删除成功", Toast.LENGTH_SHORT).show();
121                                 //alb = bld.getAll();
122                                 alb.remove(index);
123                                 bla.notifyDataSetChanged();
124                             }
125                         })
126                         .show();
127
128                 break;
129         }
130         return super.onContextItemSelected(item);
131     }
132
133     //BaseAdapter的实现类
134     class BLAdapter extends BaseAdapter
135     {
136         @Override
137         public int getCount() {
138             return alb.size();
139         }
140
141         @Override
142         public Object getItem(int position) {
143             return alb.get(position);
144         }
145
146         @Override
147         public long getItemId(int position) {
148             return alb.get(position).getId();
149         }
150
151         @Override
152         public View getView(int position, View convertView, ViewGroup parent) {
153             //得到数据
154             BlacList blacList = alb.get(position);
155             //得到视图
156             if (convertView == null)
157             {
158                 //构建视图
159                 convertView = new TextView(MainActivity.this);
160             }
161             //视图和数据做显示匹配
162             TextView textView = (TextView)convertView;
163             textView.setTextSize(20);
164             textView.setHeight(80);
165             textView.setText(blacList.getPhoneNumber());
166             return textView;
167         }
168     }
169     //添加
170     public void add_onClick(View v)
171     {
172         //自定义对话框
173         final EditText editText = new EditText(this);
174         editText.setHint("输入电话号码");
175         editText.setInputType(InputType.TYPE_CLASS_PHONE);
176         //构建对话框
177        new AlertDialog.Builder(this)
178                .setTitle("添加黑名单")
179                .setView(editText)
180                .setCancelable(false)
181                .setNegativeButton("取消", null)
182                .setPositiveButton("保存", new DialogInterface.OnClickListener() {
183                    @Override
184                    public void onClick(DialogInterface dialog, int which) {
185                        //向数据库保存
186                        //1.定义实体类
187                        BlacList blacList = new BlacList(editText.getText().toString());
188                        //2.通过DAO插入数据
189                        long l = bld.insert(blacList);
190                        if (l > 0) {
191                            Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
192                            //更新list
193                            //alb = bld.getAll();
194                            blacList.setId(l);
195                            alb.add(0,blacList);
196                            //刷新列表
197                            bla.notifyDataSetChanged();
198                        }
199                        else {
200                            Toast.makeText(MainActivity.this, "保存失败", Toast.LENGTH_SHORT).show();
201                        }
202                    }
203                })
204                .show();
205     }
206 }

MainActivity

时间: 2024-11-05 22:06:06

Android——黑名单的相关文章

Android课程---添加黑名单的练习(课堂讲解)

DBHelper.java package com.hanqi.test3; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; /** * Created by Administrator on 2016/4/15. */ public cla

Android之——手机黑名单的实现

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47089209 有了前面几篇博文作为基础(<Android之--AIDL小结>.<Android之--AIDL深入>.<Android之--自动挂断电话的实现>),我将在这片博文中向大家介绍如何实现手机黑名单的功能.用过Android手机的用户都知道,如果不想接听一些人的电话或者接收一些人的短信,可以将这些人的手机号码放入手机黑名单中,此时,将不会接收到这

Android开发之黑名单来电自动挂断

本实例允许用户动态添加号码到黑名单,并实现黑名单来电自动挂断.程序通过创建PhoneStateListener监听器来监听TelephonyManager的通话状态来实现该功能. 由于自Android 10之后Android不再对外公开挂断电话的API,如果需要挂断电话必须使用AIDL与电话管理Service进行通信,并调用服务中的API实现结束电话. 为了调用远程的AIDL Service,开发者需要将Android源码中的如下两个文拷到指定位置: com.android.internal.t

Android课程---添加黑名单的练习2(课堂讲解)

实现黑名单的添加.修改.查询和删除,首先得有封装的3个类,便于使用 BlackNumber.java package com.hanqi.test3; /** * Created by Administrator on 2016/4/15. */ public class BlackNumber { private long id; private String phoneNumber; public BlackNumber(long id, String phoneNumber) { this

Android广播组件实践——短信黑名单

转载请注明出处:http://blog.csdn.net/chengbao315/article/details/51011358 相关阅读: Android服务组件案例:http://blog.csdn.net/chengbao315/article/details/50997218 上回书我提到了想要编写安卓四大组件案例的想法,那么说到做到,这次我就来做一个Android广播组件的案例.这次想要模仿手机360软件的短信黑名单功能,可以实现号码加入黑名单,后台运行程序,短信来到时进行拦截,并可

android项目 之 来电管家(3) ----- 添加与删除黑名单

现在就实现具体的功能-----添加黑名单 先看图: 从图中也可以看出整个逻辑,就是: 1.  点击底部的添加按钮 2.  转到联系人选择界面选择联系人(这里调用的是系统的联系人界面,每次只能选择一个联系人,当然了,要实现每次选择多个联系人也可以,可以自定义选择联系人界面) 3. 返回选择的联系人并插入到数据库中. 4. 遍历数据库中的黑名单表,将所有的黑名单显示在ListView中 5. 删除联系人 6. 刷新黑名单显示列表 主要代码(BlackListActivity.java): priva

屏蔽电信流氓广告造成的诡异的问题--Android WebView 长时间不能加载页面

发现在家里的时候用Android App里的WebView打开网站很慢,会有十几秒甚至更长时间的卡住. 但是在电脑上打开同样的网页却很快. 查找这个问题的过程比较曲折,记录下来. 抓取Android网络数据 为了调试这个问题,首先要抓取Android的网络包数据.开始时,是想用Wireshark来抓包的,但是很麻烦,tcpdump在手机要root权限. 于是转换思路,能不能在Android上设置代理,来抓包? 但是fiddler没有linux版本,于是转用BurpSuite了. 设置Androi

android 电话监听和拦截

一.首先在manifest.xml文件中获取监听电话权限,注册监听电话的Activity <receiver android:name=".PhoneReceiver"> <intent-filter android:priority="1000"> <action android:name="android.intent.action.PHONE_STATE"/> <action android:nam

[android] 手机卫士黑名单功能(ListView结合SQLite增删改)

修改界面,在顶部横条上增加一个添加按钮,点击打开一个自定义对话框,输入电话号码和拦截模式保存到数据库 自定义对话框看这篇http://www.cnblogs.com/taoshihan/p/5370378.html   添加记录 调用Builder对象的show()方法,获取AlertDialog对象 调用View.inflate()方法,将布局文件转成View对象 调用View对象的findViewById()方法,获取确认和取消的Button对象 调用Button对象的setOnClickL