package com.example.hp.message_interception;
import android.app.Activity;
import android.os.Handler;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import java.util.List;
/**
* 具有固定规则的大量的数据 可以储存在数据库中 所以建库 然后增删改查
* 可以有三列 _id主键列 number号码列 mode int 0全部拦截 1拦截电话 2拦截短信
* 新建一个数据库的类 db (database) 类要继承squliteOpenhelper
*/
public class SettingActivity extends AppCompatActivity {
private ListView listView;
private LinearLayout llLoading;
private ProgressBar progressBar;
private TextView tvDesc;
private MyAdapter adapter;
/**
* 黑名单操作的工具类
*/
private BlackDao blackDao;
//黑名单的集合
//private List<BlackNumBean> allBlackNum;
private List<com.example.hp.message_interception.BlackNumBean> blackNums;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setting);
ctx = this;
listView = (ListView) findViewById(R.id.li_listView);
llLoading = (LinearLayout) findViewById(R.id.ll_loading);
progressBar = (ProgressBar) findViewById(R.id.pb_progressBar);
tvDesc = (TextView) findViewById(R.id.tv_desc);
blackDao = BlackDao.getInstance(this);
fillData();
}
private void fillData() {
//当点击上一页 下一页 是将加载狂显示出来
llLoading.setVisibility(View.VISIBLE);
// 进入页面后 加载数据(开子线程) 根据结果 显示页面
new Thread() {
public void run() {
//当第一次加载后 会把数据设置给集合
//当第二次加载后 会把数据追加在第一次后
if (blackNums == null) {//第一次
//所有的黑名单的集合
// allBlackNum = blackDao.getAllBlackNum();
blackNums = blackDao.getBlackNumByPage(pageIndex, pageSize);
} else { ///加载更多 ,数据追加
blackNums.addAll(blackDao.getBlackNumByPage(pageIndex, pageSize));
}
//获取黑名单的数量
int totalcount = blackDao.getBlackNumCount();
if (totalcount % pageSize == 0) {// 判断是否能整除
totalPage = totalcount / pageSize;
} else {
totalPage = totalcount / pageSize + 1;
}
//如果集的size 是0 则没有黑名单 ,如果不是零 则有黑名单 则要展示出来、、
//而子线程不能改变页面 那么就要发送handler信息
//发送一个空的消息 数据获取完了 可以刷新页面
handler.sendEmptyMessage(FLUSH_UI);
}
}.start();
}
/**
* 当前页面的下标
*/
private int pageIndex = 0;
/**
* 每一页的数量
*/
private int pageSize = 20;
/**
* 总页数
*/
private int totalPage;
protected Activity ctx;
//刷新界面用的 当获得了数据后 就发送一个信息
private final int FLUSH_UI = 100;
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case FLUSH_UI://子线程获得了数据,开始刷新页面
// 没有黑名单的情况
if (blackNums.size() == 0) {// 没有黑名单的情况
progressBar.setVisibility(View.GONE);
tvDesc.setText("没有黑名单,请添加几个吧");
} else {
// 有黑名单,关闭加载框,listView 展示黑名单 就是为Listview 设置Adapter
llLoading.setVisibility(View.GONE);
if (adapter == null) { //第一次加载
adapter = new MyAdapter();
listView.setAdapter(adapter);
} else {
//追加数据
adapter.notifyDataSetChanged();// 刷新listView 否则仍会从头开始 显示
}
}
break;
}
}
;
};
private class MyAdapter extends BaseAdapter {
@Override
/**
* 告诉 listview 有多少个条目
*/
public int getCount() {
// TODO Auto-generated method stub
return blackNums.size();
}
@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;
}
@Override
/**
* 返回第一个条目对应的 view ,
* 当某个 条目 将要显示在屏幕上时,就会调用getView 方法 ,将该条目创建出来
* @param position 条目的下标
* 新建一个list_item_black_num.xml的条目布局
*/
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view;
ViewHolder vh;
if (convertView == null) {
view = getLayoutInflater().inflate(R.layout.list_item_black_num, null);
//创建ViewHolder
vh = new ViewHolder();
// 找到 子 view
TextView tvNum = (TextView) view.findViewById(R.id.tv_number_list_item);
TextView tvMode = (TextView) view.findViewById(R.id.tv_mode_list_item);
ImageView ivDelete = (ImageView) view.findViewById(R.id.iv_delete_list_item);
// 将子view 打包
vh.tvMode = tvMode;
vh.tvNum = tvNum;
vh.ivDelete = ivDelete;
// 将背包背在view的身上
view.setTag(vh);
} else {
view = convertView;
//取出背包
vh = (ViewHolder) convertView.getTag();
}
com.example.hp.message_interception.BlackNumBean blackNumBean = blackNums.get(position);
//用取出的背包赋值
vh.tvNum.setText(blackNumBean.number);
vh.tvMode.setText("已添加拦截");
//删除黑名单
// 为ivdelete设置一个点击事件
vh.ivDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//从数据库中删除数据
blackDao.deleteBlackNum(blackNums.get(position).number);
//从集合中删除数据
blackNums.remove(position);
//刷新页面
notifyDataSetChanged();
}
});
return view;
}
}
private static class ViewHolder {
public ImageView ivDelete;
TextView tvNum;
TextView tvMode;
}
/**
* 添加黑名单
*
* @param v
*/
public void addBlackNum(View v) {
// 展示天年黑名单的对话框
sho
没有合适的资源?快使用搜索试试~ 我知道了~
Android课程设计-骚扰短信拦截器
共82个文件
xml:42个
png:15个
java:14个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 42 浏览量
2023-12-19
03:03:08
上传
评论
收藏 377KB ZIP 举报
温馨提示
- 项目介绍 运行中有什么问题可以私聊博主,本人高级安卓工程师,主页置顶有常见爆红解决的方法 ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 -------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
资源推荐
资源详情
资源评论
收起资源包目录
SMS_INTERCEPT-master.zip (82个子文件)
SMS_INTERCEPT-master
gradle.properties 730B
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 236B
app
src
androidTest
java
com
example
hp
message_interception
ExampleInstrumentedTest.java 774B
test
java
com
example
hp
message_interception
ExampleUnitTest.java 413B
main
java
util
DataBaseUtil.java 2KB
MyOpenHelper.java 459B
com
example
hp
message_interception
smsReceiver.java 2KB
BlackNumBean.java 480B
BlackNumDbHelper.java 836B
SettingActivity.java 10KB
Welcome.java 2KB
MyUtils.java 2KB
BlackDao.java 7KB
Sign_up.java 3KB
MainActivity.java 5KB
Sign_in.java 2KB
res
mipmap-xxhdpi
ic_launcher_round.png 10KB
ic_launcher.png 8KB
mipmap-hdpi
ic_launcher_round.png 4KB
ic_launcher.png 3KB
drawable-xhdpi
ic_delete_btn.png 1KB
ic_delete_btn_focused.png 2KB
mipmap-mdpi
ic_launcher_round.png 2KB
ic_launcher.png 2KB
mipmap-xxxhdpi
ic_launcher_round.png 14KB
ic_launcher.png 10KB
mipmap-xhdpi
ic_launcher_round.png 6KB
ic_launcher.png 5KB
values-w820dp
dimens.xml 358B
values
dimens.xml 211B
colors.xml 208B
strings.xml 83B
styles.xml 1KB
layout
dialog_add_blacknum.xml 1KB
list_item_black_num.xml 1KB
activity_sign_up.xml 2KB
activity_welcome.xml 387B
activity_sigin_in.xml 2KB
activity_main.xml 2KB
activity_setting.xml 2KB
drawable
btn_green_normal.9.png 917B
welcome.png 204KB
iv_delete_bg.xml 542B
btn_green_pressed.9.png 2KB
btn_normal_bg.xml 391B
AndroidManifest.xml 2KB
proguard-rules.pro 915B
build.gradle 923B
app.iml 11KB
.gitignore 7B
gradlew.bat 2KB
build.gradle 498B
.idea
codeStyles
Project.xml 2KB
libraries
Gradle__org_hamcrest_hamcrest_library_1_3_jar.xml 555B
Gradle__com_android_support_support_compat_25_2_0.xml 922B
Gradle__com_android_support_test_espresso_espresso_idling_resource_2_2_2.xml 846B
Gradle__com_android_support_constraint_constraint_layout_1_0_2.xml 440B
Gradle__com_android_support_appcompat_v7_25_2_0.xml 912B
Gradle__com_android_support_animated_vector_drawable_25_2_0.xml 809B
Gradle__com_android_support_test_rules_0_5.xml 714B
Gradle__android_android_25.xml 246B
Gradle__com_android_support_test_runner_0_5.xml 719B
Gradle__com_squareup_javawriter_2_1_1_jar.xml 536B
Gradle__com_android_support_support_annotations_25_2_0_jar.xml 907B
Gradle__com_android_support_support_fragment_25_2_0.xml 932B
Gradle__com_android_support_constraint_constraint_layout_solver_1_0_2_jar.xml 377B
Gradle__com_android_support_support_core_utils_25_2_0.xml 942B
Gradle__com_android_support_support_vector_drawable_25_2_0.xml 804B
Gradle__org_hamcrest_hamcrest_core_1_3_jar.xml 541B
Gradle__com_android_support_support_core_ui_25_2_0.xml 927B
Gradle__org_hamcrest_hamcrest_integration_1_3_jar.xml 576B
Gradle__javax_inject_javax_inject_1_jar.xml 526B
Gradle__com_android_support_support_v4_25_2_0.xml 423B
Gradle__junit_junit_4_12_jar.xml 485B
Gradle__com_android_support_support_media_compat_25_2_0.xml 952B
Gradle__com_android_support_test_exposed_instrumentation_api_publish_0_5.xml 864B
Gradle__javax_annotation_javax_annotation_api_1_2_jar.xml 379B
Gradle__com_google_code_findbugs_jsr305_2_0_1_jar.xml 359B
Gradle__com_android_support_test_espresso_espresso_core_2_2_2.xml 791B
settings.gradle 15B
gradlew 5KB
共 82 条
- 1
资源评论
Android安卓科研室
- 粉丝: 1524
- 资源: 1165
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功