基于Android平台的手机安全卫士的设计与实现

news/2024/11/8 15:12:41/

目 录
第1章 引言 1
1.1 研究背景及意义 1
1.2 安全软件的现状 1
1.3 本文主要工作 2
1.4 本文的组织结构 2
第2章 Android的相关技术介绍及分析 3
2.1 搭建Android开发环境 3
2.1.1 搭建Ubuntu系统下Java开发环境 3
2.1.2 搭建Ubuntu系统下Android开发环境 3
2.2 Android项目目录结构 4
2.3 Activity 5
2.3.1 Activity生命周期方法 5
2.3.2 与其他应用程序交互 5
2.4 BroadcastReceiver 6
2.4.1 广播接收者的分类 6
2.4.2 注册广播接收者的两种方式 6
2.5 Service 7
2.5.1 什么是服务 7
2.5.2 本地服务 7
2.5.3 远程服务 7
第3章 手机安全卫士分析与设计 8
3.1 手机防盗功能需求分析与设计 8
3.2 通讯卫士功能需求分析与设计 9
3.3 软件管理功能需求分析与设计 10
3.4 进程管理功能需求分析与设计 10
3.5 程序锁功能需求分析与设计 10
3.6 手机杀毒功能需求分析与设计 11
3.7 系统优化功能需求分析与设计 12
3.8 自动升级功能需求分析与设计 12
第4章 手机安全卫士详细设计与实现 13
4.1 欢迎界面实现 13
4.1.1 检查升级功能实现 14
4.1.2 升级对话框显示功能实现 14
4.2 应用程序主界面实现 14
4.3 程序锁实现 16
4.4 手机防盗实现 18
4.5 手机杀毒实现 19
4.6 系统优化实现 21
4.7 通讯卫士实现 21
4.8 软件管理实现 23
4.9 高级工具实现 23
4.10 系统设置实现 25
第5章 结论与展望 27
5.1 结论 27
5.2 进一步工作的方向 27
参考文献 28
致 谢 29
第3章手机安全卫士分析与设计
手机防盗功能需求分析与设计
落地有声:由于我的眼镜是透明的,经常一觉睡醒找不到眼镜,每次这个时候都想能通过手机控制眼镜发出声音以便更快的找到眼镜。落地有声就是由这个想法演变来的,如果用户的爱机刚被盗不久,那么手机还在用户附近的,如果此时设定的安全号码手机可以用,只需要用安全手机发送一条警报指令给丢失的手机,那么丢失的手机就会播放报警音乐,以便用户在第一时间找回丢失的爱机。
换卡先知:Android手机换SIM卡都需要重启手机,每次手机重启的时候判断当前SIM卡的串号是否和被保护的SIM卡的串号是否相同,如果不相同,则手机将在后台自动发送短信给安全手机,这样就在小偷不知道的情况下第一时间得知小偷的手机号码,大大提升找回手机的可能性。
远程开启防盗:当用户爱机没有开起防盗功能的时候,使用任意的手机发送应用和密码和远程开启防盗功能命令时可以开起防盗功能,并设置当前手机号码安全手机号码,从而为找回手机打下基础。
通信拦截:获取丢失的爱机的外拨电话、来电号码、外发短信和收到的短信,并转发给安全手机。这样就可以爱机丢失的第一时间和盗窃者取得联系,也获取了盗窃者朋友的手机号码,进一步增加找回手机的可能性,也大大影响了丢失爱机的正常使用,使盗窃者觉得丢失的爱机拿来也无用,还给手机主人好些。
保护隐私:当用户的爱机丢失时,通过短信发送特定的指令,可将丢失手机通讯录里面的所有联系人、通话记录以及短信内容全部删除,及时保护用户的相关隐私信息。
充电防盗:在某些特殊的场合,用户的爱机急需充电,而用户又不在手机周围,这时开启手机充电防盗就能很好地监控手机的状况,一旦有其他人蓄意拔出正在充电的手机,手机就会立即发出警报音,并同时发送短信通知安全手机。

package com.bingoogol.frogcare;import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.lang.Thread.UncaughtExceptionHandler;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;import android.app.Activity;
import android.app.Application;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Process;import com.bingoogol.frogcare.util.Constants;
import com.bingoogol.frogcare.util.DateUtil;
import com.bingoogol.frogcare.util.Logger;
import com.bingoogol.frogcare.util.SpUtil;
import com.bingoogol.frogcare.util.StorageUtil;
import com.bingoogol.frogcare.util.ToastUtil;/*** 保存应用程序全局状态的基类* * @author bingoogol@sina.com 2014-4-25*/
public class App extends Application {private static final String TAG = "App";/*** 应用程序中所有正在使用的activity集合,主要是用来实现完全退出应用程序功能*/private List<Activity> mActivities;/*** 上一次按下返回键时的时间戳*/private long lastTime;@Overridepublic void onCreate() {super.onCreate();mActivities = new ArrayList<Activity>();SpUtil.init(this);Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler());}/*** 添加activity到全局状态中* * @param activity*/public void addActivity(Activity activity) {mActivities.add(activity);}/*** 从全局状态中移除activity* * @param activity*/public void removeActivity(Activity activity) {mActivities.remove(activity);}/*** 双击返回键退出应用程序*/public void exitWithDoubleClick() {if (System.currentTimeMillis() - lastTime <= 1500) {exit();} else {lastTime = System.currentTimeMillis();ToastUtil.makeText(this, R.string.exit_tips);}}/*** 退出应用程序*/public void exit() {for (Activity activity : mActivities) {activity.finish();}System.exit(0);}private class MyUncaughtExceptionHandler implements UncaughtExceptionHandler {@Overridepublic void uncaughtException(Thread thread, Throwable ex) {FileWriter fw = null;try {File file = new File(StorageUtil.getFeedbackDir(), DateUtil.dateToDayString(new Date()) + ".log");boolean flag = file.exists();// 这行执行完,file就存在了,所以得在这之前判断文件是否已经存在fw = new FileWriter(file, true);if (!flag) {fw.write("当前应用版本:" + getCurrentVersionName() + "\n");fw.write("当前设备信息:\n");fw.write(getMobileInfo());fw.write("----------------------------------------------------------------------------\n");}fw.write(getErrorInfo(ex));fw.write("----------------------------------------------------------------------------\n");fw.flush();// TODO 正式发布后删掉ex.printStackTrace();} catch (Exception e) {Logger.e(TAG, e.getMessage());} finally {if (fw != null) {try {fw.close();} catch (IOException e) {Logger.e(TAG, e.getMessage());}}}Process.killProcess(Process.myPid());// TODO 定期上传错误日志到服务器}private String getErrorInfo(Throwable throwable) {Writer writer = new StringWriter();PrintWriter pw = new PrintWriter(writer);throwable.printStackTrace(pw);pw.close();return writer.toString();}private String getMobileInfo() {StringBuffer sb = new StringBuffer();// 通过反射获取系统的硬件信息try {Field[] fields = Build.class.getDeclaredFields();for (Field field : fields) {// 暴力反射 ,获取私有的信息field.setAccessible(true);sb.append(field.getName() + "=" + field.get(null).toString());sb.append("\n");}} catch (Exception e) {Logger.e(TAG, e.getMessage());}return sb.toString();}}/*** 获取当前版本名称* * @return*/public String getCurrentVersionName() {try {return getPackageManager().getPackageInfo(getPackageName(), 0).versionName;} catch (Exception e) {// 利用系统api getPackageName()得到的包名,这个异常根本不可能发生return null;}}/*** 获取当前版本号* * @return*/public int getCurrentVersionCode() {try {return getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;} catch (Exception e) {// 利用系统api getPackageName()得到的包名,这个异常根本不可能发生return 0;}}/*** 获取安装apk文件的意图对象* * @param apkFile*            要安装的apk文件* @return*/public Intent getInstallApkIntent(File apkFile) {Intent installApkIntent = new Intent();installApkIntent.setAction(Intent.ACTION_VIEW);installApkIntent.addCategory(Intent.CATEGORY_DEFAULT);installApkIntent.setDataAndType(Uri.fromFile(apkFile), Constants.mime.APK);return installApkIntent;}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/276045.html

相关文章

Android开发实战《手机安全卫士》——1.手机安全卫士的需求分析 更新 打包

文章目录 1.手机防盗需求分析2.手机卫士其余模块需求分析3.手机卫士的包名划分4.SVN提交代码 & 代码的下载5.SplashActivity布局分析6.文本框阴影效果7.Activity去头操作 & 保留高版本主题8.获取版本名称并且展示9.构建服务器端json & 无BOM编码10.请求网络数据 &a…

百度卫士的修复服务器,云安服务器安全卫士功能介绍

系统安全包括用户安全、账号守护、磁盘权限、网络安全、系统组件、系统服务、垃圾清理、优化设置、日志安全九个部分。系统安全可以给服务器系统提供安全保障。 云安服务器安全卫士下载地址&#xff1a; https://www.jb51.net/softs/103841.html 一、用户安全&#xff1a; 检…

打电话买什么骨传导蓝牙耳机好,几款性价比高的通话蓝牙耳机分享

随着越来越多的人喜欢户外运动&#xff0c;骨传导耳机也逐渐被人们所熟知。骨传导耳机是通过颅骨和内耳传递声音到听觉中枢&#xff0c;所以听感相对较好&#xff0c;不会对耳朵造成任何损伤&#xff0c;因此在户外运动中使用骨传导耳机是一个很好的选择。接下来我会给大家介绍…

Spring Websocket Session集群

WebSocketSession无法序列化到redis&#xff0c;因此在集群中&#xff0c;我们无法将所有WebSocketSession都缓存到redis进行session共享。但是&#xff0c;我们可以使用redis的发布订阅模式解决。 1、WebSocketHandler 消息处理器 import com.alibaba.fastjson.JSON; import…

唯美girls

import requests ,re from fake_useragent import UserAgent import time,os#请求网页 url"https://www.vmgirls.com/13344.html" headers {"User-Agent":UserAgent().chrome } #表明自己的一个身份 rrequests.get(url,headersheaders) #print(r.request.h…

童年游戏 世嘉MD 美少女战士 最高难度 一命通关视频

美少女战士是MD平台的一款横版格斗游戏&#xff0c;该款游戏改编自当是的热门同名漫画《美少女战士》。动漫里的各种美女帅哥都有登场&#xff0c;每当主角打BOSS的时候&#xff0c;男主角就会出现并扔下一枝玫瑰花&#xff0c;捡了花之后生命值就会回满。 观看地址 https://w…

少女漫「不思议游戏」新作

【M站 老南街 整理报道】昨日渡濑悠宇的经典少女漫画「不思议游戏」才宣布将要舞台剧化&#xff0c;以喜矢武丰将饰演鬼宿为故事主角来展开&#xff01;在今日发售的flowers3月号又公布了最新消息&#xff01;渡濑玩完玄武篇之后&#xff0c;如今决定要出白虎篇了。将会在2月28…

蔷薇

蔷薇&#xff08;学名&#xff1a;Rosa sp.&#xff09; 别称&#xff1a;多花蔷薇、蔓性蔷薇、墙蘼、刺蘼、蔷蘼、刺莓苔、野蔷薇 蔷薇属部分植物的通称&#xff0c;主要指蔓藤蔷薇的变种及园艺品种 产地生境&#xff1a;喜生于路旁、田边或丘陵地的灌木丛中&#xff0c;产中国…