基于 Android 平台的手机安全卫士的设计与实现【100010420】
基于 Android 平臺的手機安全衛士的設計與實現
第 1 章 引言
1.1 研究背景及意義
隨著智能手機和網絡的完美結合,使得智能機的功能越來越強大,瀏覽網頁、網絡購物、視頻對話都普及到各個手機終端,然而手機平臺越廣泛,存在的危險就越大,越來越多的安全問題出現在手機的日常運用中[1]。當我們以為只有通過網絡才會使手機中毒的時候,沒想到智能手機那方便快捷的數據傳送方式:WIFI、藍牙、內存卡等也使我們的手機暴露在病毒感染的危險之中。通訊設備本身所具備的便利的支付收費、支付方式都為不法份子提供了可乘之機。
當人們已經習慣把手機當做一個移動存儲設備,作為一個方便攜帶的移動終端時,風險并不僅來源于手機病毒,也來源于 3G 網絡的的開放性。當手機不慎丟失或者是在手機數據傳送的過程中用戶數據很容易會被竊聽、復制或者篡改。這不僅會面臨經濟損失,還會遇到甚至更為嚴重的隱私泄露危險。
手機作為個人通信工具,每天跟隨用戶,保存了很多個人隱私。并且近年來收費電話,垃圾短信,電話和短信詐騙等層出不窮[2]。如果能從這些方面著眼,解決用戶的實際問題,才是目前真正要做的。而這一類的軟安全軟件目前市場上也有很多,比如,一些來電顯示軟件,就可以很準確的告知用戶來電的歸屬地,一定程度上杜絕了電話欺詐;另外一些軟件可以由用戶自定義號碼黑名單,主動的屏蔽掉騷擾電話和短信。
1.2 安全軟件的現狀
隨著移動互聯網的不斷發展,不少互聯網廠商都看中了手機安全這塊蛋糕,并已占開積極布局。國內電腦安全軟件廠商 360 早在 09 年就開始推出 360 手機安全衛士。目前,包括金山、騰訊等互聯網公司也都先后推出了各自的手機安全軟件。
學術探討國際著名市場調查機構 Juniper Research 經過調查后預測,到 2011 年,全球手機安全市場價值將為 50 億美元,不僅僅包括殺毒軟件,也包括智能手機的安全接入與安全加固[3]。防病毒、防垃圾、防間諜軟件是市場的大頭,約占 40% 左右,安全接入與安全加固軟件約占 26%[4]。
手機安全軟件的最大作用是保護用戶的手機安全,但是目前市面上的安全軟件都附帶了很多的東西,并不是用戶真正想使用的,白白占用了很多內存。而且某些功能上給用戶帶來的體驗也不是很好,例如金山手機衛士的程序鎖功能,每次用戶進入應用程序都要求輸入密碼,如果用戶正在使用某軟件的時候突然有人打電話過來,當通話結束后,用戶還得再次輸入密碼,這樣的設計使用戶很苦惱。
1.3 本文主要工作
本次畢業設計所實現的手機安全衛士是基于 Android 系統開發的,通過研究目前 Android 手機用戶所面臨的安全問題,開發出一款手機安全與管理軟件。該軟件的主要能包括手機防盜,在用戶手機丟失后通過綁定的安全手機號碼找回手機;通訊衛士,避免用戶被不必要的短信或電話騷擾;程序鎖,對某些特定的應用程序加鎖,當手機解鎖屏幕后第一次使用應用程序需輸入密碼;軟件管理,用戶可以運行、卸載或者分享自己喜歡的應用程序給好友;進程管理,通過桌面組件快捷方式管理運行中的進程,是手機保持最佳的運行狀態。整個系統主要是通過 Eclipse 編程實現,其中編寫了大量的 Android 自定義組件來美化系統界面。通過用例的方式說明整個系統的設計與實現和功能描述等。
1.4 本文的組織結構
第 1 章:引言,主要包括應用的研究背景、本文主要工作和論文組織結構。
第 2 章:Android 相關技術介紹及分析,主要包括 Android 開發環境的搭建,Android 項目目錄結構、Activity、BroadcastReceiver、Service 介紹。
第 3 章:手機安全衛士分析與設計,主要是通過用例表的方式分析與設計手機防盜功能、通訊衛士功能、軟件管理功能、進程管理功能、系統優化功能。
第 4 章:手機安全衛士詳細設計與實現,主要包括應用程序自動升級、應用程序主界面、通訊衛士、手機防盜、軟件管理、進程管理、系統優化、病毒查殺、高級工具中的手機號碼歸屬地查詢和常用號碼查詢的實現。
第 5 章:結論與展望,即對本文的總結,并提出可擴展的功能模塊說明。
第 2 章 Android 的相關技術介紹及分析
2.1 搭建 Android 開發環境
在 Android 應用程序開發過程中使用的工具軟件都是可以在網上免費下載的,本手機安全衛士采用的的集成開發環境為安卓官方網站提供的 ADT。此外,與開發普通 Java 程序類似的是在 Ubuntu 系統下我們需要將 SDK 的目錄添加到系統的環境變量[5]。具體的地址和安裝步驟如下:
2.1.1 搭建 Ubuntu 系統下 Java 開發環境
到官網下載 JDK 文件
跳轉到下載目錄
cd /home/bingo/下載解壓到安裝目錄
tar -zxvf jdk-7u45-linux-i586.tar.gz -C /home/bingo/install配置環境變量
在/etc/profile.d 目錄下新建一個叫 java.sh 的文件
sudo vi /etc/profile.d/java.sh在 java.sh 中加入以下內容
export JAVA_HOME=/home/bingo/install/jdk1.7.0_45export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH執行以下命令使上面的配置立即生效
source /etc/profile輸入以下命令,如果顯示 Java 的版本信息說明 Java 環境配置成功
Java -version。2.1.2 搭建 Ubuntu 系統下 Android 開發環境
到官網下載 sdk
跳轉到下載目錄
cd /home/bingo/下載解壓到安裝目錄,如果不存在則創建該文件夾
mkdir /home/bingo/install如果沒安裝解壓 zip 格式的軟件,在 Ubuntu 軟件中心中安裝 7zip 和 rar
配置環境變量
在/etc/profile.d 目錄下新建一個叫 android.sh 的文件[6]
sudo vi /etc/profile.d/android.sh在 android.sh 中加入以下內容
export ANDROID_SDK_ROOT=/home/bingo/install/adt-bundle-linux-x86-20131030/sdkexport PATH=$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools:$PATH執行以下命令使上面的配置立即生效
source /etc/profile輸入以下命令,如果顯示 adb 的版本信息說明 Android 環境配置成功
adb version2.2 Android 項目目錄結構
src 文件夾:存放 Java 代碼的地方,通過集成開發環境單獨指定源代碼目錄也是可以的。
gen 文件夾:這里面最關鍵的是 R.java 文件,這個文件是集成開發環境幫我們自動生成的,不能手動去更改它,否則系統會報錯[7]。里面通過很多內部的靜態類來指向 res 目錄中的資源文件,如果開發中發現這個文件,那么很有可能是因為 res 目錄總的文件內部錯誤或者是文件重復。
assets 文件夾:存放應用中需要用到的文件,例如存放初始化系統用到的數據庫文件、音頻資源文件等[8]。
res 文件夾:主要用來存放系統中的資源文件,例如布局文件、國際化的字符串文件、圖像資源文件等。
AndroidManifest.xml 文件:該文件主要包含了應用程序的基本信息[9]。如果要使用 Android 系統中的四大組件的話則需要在文件中進行配置,還有就是系統測試和應用也需要用到系統的一些特性,因此,這些也是需要在該文件中進行配置。
default.properties 文件:在應用正式發布時為了防止別人反編譯自己的代碼,要在該文件中進行配置。同時也記錄了應用程序開發過程中的在集成開發環境中所需要的版本信息。
2.3 Activity
2.3.1 Activity 生命周期方法
onCreate 方法:當 Activity 第一次被創建的時候,Android 系統將會會執行該生命周期方法,或者是用戶在沒有退出該應用程序的情況下切換到了其他應用程序,而恰好此時系統資源不夠用了,這時系統就會回收該 Activity,但是并未銷毀該 Activity。用戶突然又切換到當前應用程序,此時系統就會重新執行該生命周期方法[10]。事實上,在實際開發中我們通常在這個方法中初始化界面組件和恢復當前 Activity 狀態。
onStart 方法:每一次 activity 從用戶不可見到用戶可見的時候系統都會執行該生命周期方法,在某些對信息時時性要求高的應用程序中,需要在該方法中更新該界面的數據,例如青蛙衛士中的系統設置界面,為了避免用戶使用 Android 系統自帶的設置界面把服務停掉后回到青蛙衛士的系統界面是看到臟數據,每次顯示該界面的時候都要重新獲取當前正在運行的服務。
onRestart 方法:當 activity 對用戶不可見并且沒有被系統銷毀的情況下,如果該 activity 再一次對用戶可見,那么系統就會執行該生命周期方法。
onResume 方法:當 activity 獲取焦點時,系統會執行該生命周期方法。
onPause 方法:當 activity 失去焦點時,系統會執行該生命周期方法,失去焦點并不是指該 activity 對用戶不可見,而是被對話框或者其他透明的 activity 遮罩,用戶是可以看見該 activity 的,只是不能點擊而已,該方法與 onResume 方法相對應。
onStop 方法:當 activity 對用戶不可見時,系統將會執行該生命周期方法,該方法與 onStart 方法是相對應的。
onDestory:當 activity 被系統銷毀時,系統會執行該生命周期方法。在實際開發中,通常在該方法內部做一些掃尾動作。例如解綁通過代碼方式在該 activity 中綁定服務、取消在該 activity 中注冊的內容觀察者等。
2.3.2 與其他應用程序交互
在我們實際開發的應用程序中,很少有應用程序是單獨存在的,或多或少都會使用到第三方應用程序提供的數據,例如實習期間做的一個遠程會議軟件,需要網服務端上傳照片,為了節省開發時間就是直接使用系統自帶的相機拍照。這里就已這個例子來介紹 Android 系統中各應用程序之間的交互。在我們自己應用程序的 activity 中,把要拍攝照片的全路徑名存放在 intent 中,并且在 intent 中加入照相的動作和類型,(系統會篩選出手機中所已安裝的照相機供用戶選擇),將該 intent 對象作為參數傳遞給 startActivityForResult 方法。程序中也調用系統自帶的相冊從相冊中選擇圖片上傳,但是相冊和相機返回的數據是不同的,所有還需要傳遞一個請求碼給 startActivityForResult 方法來區分當前操作類型,以便在 onActivityResult 方法中根據請求碼的不同來出來不同的數據[11]。
2.4 BroadcastReceiver
2.4.1 廣播接收者的分類
普通廣播:這種廣播并不是同步傳輸的,并且可以被任意廣播接收者收聽。這種廣播的好處是效率非常高。缺點是任意收聽該廣播的廣播接收者都改變不了該廣播中所傳遞的數據,同時也不能阻止別的廣播接收者收聽該廣播。
有序廣播:該廣播是依照廣播接收者的優先級次序,在收聽了該廣播的廣播接收者中根據該數據依次傳遞。例如有三個廣播接收者 X,Y,Z,優先級是 X> Y > Z。那這個廣播首先傳遞給 X,其次再傳給 Y,最后傳遞給 Z。每個廣播接收者都可接結束廣播的傳遞,比如 Y 結束了廣播的傳遞,Z 就不能收到廣播消息。另外,X 收到廣播消息后可以對消息內容進行更改,當廣播傳遞到 Y 那里的時候,廣播接收者 Y 從廣播中取到的數據就是廣播接收者 X 放進去的數據。例如,在 Android 系統中接收短信廣播就是有序廣播。
2.4.2 注冊廣播接收者的兩種方式
廣播接收者注冊方式的不同會影響其存活的時間,用清單文件配置的方式注冊的廣播接收者可以在其應用程序沒有運行的時候繼續收聽廣播[12],例如系統自帶的電池電量不足的廣播接收者,不需要專程打開某個應用程序來監聽它。
還有就是通過代碼的方式注冊廣播接收者,這種方式注冊的廣播接收者只有在其應用程序運行的時候才能收聽廣播,在實際開發中的應用場景是時時監聽廣播事件來更新界面上顯示的數據,當界面關閉后該廣播接收者就沒有存活的意思,所以就不用配置在清單文件中。
2.5 Service
2.5.1 什么是服務
Android 中的服務和 windows 中的服務類似,兩者都是運行在后臺用戶看不見的,其存在的級別會比 activity 高一些,同樣的也是需要在清單文件中進行配置,在主進程中運行。正因為是運行在主進程里的,所以不能直接在服務中執行需要運行很久的操作,應該單獨開一個子線程來做這些長時間運行的操作,例如在后臺播放音樂,在導航軟件中時時獲取最新的位置信息等。
2.5.2 本地服務
本地服務,顧名思義就是在某一個應用程序內容運行的服務。在服務外部通過執行 startService 方法來開起服務和通過執行 stopService 方法來停止服務。在服務的內部可以通過執行 stopSelf 或者 stopSelfResult 來停止服務。值得注意的是,同一時刻同一個服務只會有一個實例存在。
2.5.3 遠程服務
遠程服務,主要是應用在 Android 系統中各個應用之間的通信當中,通過接口并且暴露借口給其他應用程序,供其他應用程序調用。其客戶端連接到服務點是通過該連接來執行服務里的方法。在執行 bindService()方法連接服務時,如果是在 activity 中綁定的服務,則需要在 activity 的 onDestory()方法中執行 unbindService()方法來取消綁定的服務[13]。要說明的是,其中多個客戶端是可以綁定同一個服務的,但一個服務只會被開起一次。
第 3 章 手機安全衛士分析與設計
3.1 手機防盜功能需求分析與設計
落地有聲:由于我的眼鏡是透明的,經常一覺睡醒找不到眼鏡,每次這個時候都想能通過手機控制眼鏡發出聲音以便更快的找到眼鏡。落地有聲就是由這個想法演變來的,如果用戶的愛機剛被盜不久,那么手機還在用戶附近的,如果此時設定的安全號碼手機可以用,只需要用安全手機發送一條警報指令給丟失的手機,那么丟失的手機就會播放報警音樂,以便用戶在第一時間找回丟失的愛機。
換卡先知:Android 手機換 SIM 卡都需要重啟手機,每次手機重啟的時候判斷當前 SIM 卡的串號是否和被保護的 SIM 卡的串號是否相同,如果不相同,則手機將在后臺自動發送短信給安全手機,這樣就在小偷不知道的情況下第一時間得知小偷的手機號碼,大大提升找回手機的可能性。
遠程開啟防盜:當用戶愛機沒有開起防盜功能的時候,使用任意的手機發送應用和密碼和遠程開啟防盜功能命令時可以開起防盜功能,并設置當前手機號碼安全手機號碼,從而為找回手機打下基礎。
通信攔截:獲取丟失的愛機的外撥電話、來電號碼、外發短信和收到的短信,并轉發給安全手機。這樣就可以愛機丟失的第一時間和盜竊者取得聯系,也獲取了盜竊者朋友的手機號碼,進一步增加找回手機的可能性,也大大影響了丟失愛機的正常使用,使盜竊者覺得丟失的愛機拿來也無用,還給手機主人好些。
保護隱私:當用戶的愛機丟失時,通過短信發送特定的指令,可將丟失手機通訊錄里面的所有聯系人、通話記錄以及短信內容全部刪除,及時保護用戶的相關隱私信息。
充電防盜:在某些特殊的場合,用戶的愛機急需充電,而用戶又不在手機周圍,這時開啟手機充電防盜就能很好地監控手機的狀況,一旦有其他人蓄意拔出正在充電的手機,手機就會立即發出警報音,并同時發送短信通知安全手機。
設置安全號碼用例說明表(表 3.1)、設置報警指令用例說明表(表 3.2)、遠程開啟防盜指令用例說明表(表 3.3):
表 3.1 設置安全號碼用例說明表
| 參與者: | 用戶 |
| 目標: | 設置手機丟失后找回手機的安全手機號碼 |
| 前置條件: | 進入應用程序主界面 |
| 基本事件流: | 1. 進入設置手機防盜界面 2. 點擊安全號碼設置條目 3. 在彈出的安全號碼對話框中輸入安全號碼 4. 點擊確定按鈕完成安全號碼的設置 |
表 3.2 設置報警指令用例說明表
| 參與者: | 用戶 |
| 目標: | 設置讓手機發出報警音的指令 |
| 前置條件: | 進入應用程序主界面 |
| 基本事件流: | 1. 進入設置手機防盜界面 2. 點擊設置報警指令條目 3. 在彈出的報警指令對話框中輸入報警指令 4. 點擊確定按鈕保存報警指令 |
表 3.3 設置遠程開啟防盜指令用例說明表
| 參與者: | 用戶 |
| 目標: | 設置遠程開起手機防盜功能指令 |
| 前置條件: | 進入應用程序主界面 |
| 基本事件流: | 1. 進入設置手機防盜界面 2. 點擊設置遠程開啟防盜指令條目 3. 在彈出的遠程開啟防盜指令對話框中輸入遠程開起防盜指令 4. 點擊確定按鈕保存遠程開起防盜指令 |
3.2 通訊衛士功能需求分析與設計
電話攔截:將指定的號碼加入電話攔截列表中,那么下次在該號碼來電的時候不會通知用戶,直接在后臺掛斷電話,防止用戶被別人打騷擾電話。
短信攔截:將指定的號碼加入到短信攔截列表中,那么下次在該號碼發送短信來的時候刪除這條短信,避免用戶被垃圾信息騷擾。
全部攔截:將指定的號碼加入到全部截列表中,那么下次該號碼發送來的短信和撥打的電話都會被阻止調,避免用戶被騷擾。
添加黑名單用例說明表(表 3.5):
表 3.5 添加黑名單用例說明表
| 參與者: | 用戶 |
| 目標: | 添加黑名單號碼到黑名單列表中 |
| 前置條件: | 進入應用程序主界面 |
| 基本事件流: | 1.進入通訊衛士界面 2.點擊添加按鈕 3.在彈出對話框中輸入黑名單號碼 4.在彈出對話框中選擇攔截模式 5.點擊確定按鈕完成黑名單號碼的添加 |
3.3 軟件管理功能需求分析與設計
按用戶程序和系統程序分類管理手機中的應用程序,可以查看、執行、卸載和分享用戶程序。而系統程序只能被查看和執行。
3.4 進程管理功能需求分析與設計
目前市面上的某些 Android 手機性能并不是很好,多開幾個應用程序就會很卡,而正在運行的程序中有些并不是用戶所需要的,通過系統服務獲得系統中正在運行的應用總數和手機中剩下的內存信息以及運行中進程詳細信息展示給用戶,然后提供后臺進程停止選項,根據用戶的選擇終止特定的應用程序。并且提供一個桌面組件給用戶,使其能在桌面上點一個按鈕就能清理正在運行的應用程序。
進程管理用例說明表(表 3.6):
表 3.6 進程管理功能用例說明表
| 參與者: | 用戶 |
| 目標: | 根據用戶的操作結束特定的進程 |
| 前置條件: | 進入應用程序主界面 |
| 基本事件流: | 1.進入進程管理界面 2.選擇需要停止的應用程序 3.單擊停止按鈕結束所選進程 |
3.5 程序鎖功能需求分析與設計
在日常生活中,好友之間可能會互相借手機打電話或者是玩游戲,但是用戶不想讓好友看自己手機里的某些私密應用程序,如果給手機的鎖屏加上密碼,那么每次解鎖屏幕的時候都得輸入密碼,自己用著也會麻煩,而且手機解鎖屏幕后給玩游戲的話好友可以操作手機上的任意一個應用程序。
程序鎖功能就是為了解決以上問題,用戶不必給屏幕加密碼鎖,只需要給特定的應用加上應用鎖就可以了,只有解屏后第一次進入加鎖的應用程序才會要求輸入程序鎖密碼,在應用解鎖后只要沒有鎖屏的情況下,即使用戶退出應用程序界面再次進入時不需要輸入密碼,此時如果好友再讓你借手機給他玩,那么用戶只需要把屏幕關閉后給他,除了用戶的加鎖程序,其他程序好友都可以玩。
設置程序鎖狀態用例說明表(表 3.7)、添加需要保護的應用用例說明表(表 3.8)、移除已加鎖應用用例說明表(表 3.9):
表 3.7 設置程序鎖狀態用例說明表
| 參與者: | 用戶 |
| 目標: | 按照用戶指定的方式設置程序鎖狀態 |
| 前置條件: | 進入應用程序主界面 |
| 基本事件流: | 1. 進入設置中心界面 2. 點擊程序鎖條目,選擇程序鎖條目設置程序鎖的狀態 |
表 3.8 添加需要保護的應用用例說明表
| 參與者: | 用戶 |
| 目標: | 添加應用程序到已加鎖應用列表中 |
| 前置條件: | 進入應用程序主界面 |
| 基本事件流: | 1. 進入程序鎖界面 2. 點擊未加鎖列表中的應用條目 |
表 3.9 移除已加鎖應用用例說明表
| 參與者: | 用戶 |
| 目標: | 從已加鎖應用列表中移除應用程序 |
| 前置條件: | 進入應用程序主界面 |
| 基本事件流: | 1. 進入程序鎖界面 2. 點擊已加鎖標簽 3. 點擊已加鎖列表中的應用條目 |
3.6 手機殺毒功能需求分析與設計
手機安全廠商和各大應用市場收集了市面上常見的病毒軟件,本功能需要收集他們所提供的病毒軟件的包名,將其存儲到本地數據庫中,在執行病毒掃描的時候將手機中所有已安裝的用戶程序包名與病毒數據庫中的包名進行對比,如果相同則詢問用戶是否卸載該應用程序。
3.7 系統優化功能需求分析與設計
清理應用程序緩存在手機中的緩存數據,但是這需要具備 root 權限,所以本應用的實現方式打開系統自帶的查看應用程序詳細信息界面,在該界面中清理緩存數據。
3.8 自動升級功能需求分析與設計
升級方式用例說明表(表 3.10)、自動升級用例說明表(表 3.11):
表 3.10 升級方式用例說明表
| 參與者: | 用戶 |
| 目標: | 按照用戶指定的方式設置應用升級方式 |
| 前置條件: | 進入應用程序主界面 |
| 基本事件流: | 1. 進入設置中心界面 2. 點擊自動更新條目,選擇升級方式 |
表 3.11 自動升級用例說明表
| 參與者: | 用戶 |
| 目標: | 在 wifi 打開的情況下,按照用戶指定的升級方式升級應用程序 |
| 前置條件: | 進入安全衛士歡迎界面 |
| 基本事件流: | 1.用戶允許手機安全衛士應用程序 2.程序自動判斷應用程序當前版本和服務器最新版本,并顯示 3.在彈出的對話框中選擇立即更新 |
第 4 章 手機安全衛士詳細設計與實現
4.1 歡迎界面實現
該界面的主要功能是顯示軟件升級信息和初始化應用程序,如果服務器的最新版本和當前版本相同則顯示應用的當前版本信息,否則顯示提示升級信息對話框,用戶根據需要自行決定是否升級。
歡迎界面提示用戶升級應用的實現如圖 4.1 所示:
圖 4.1 歡迎界面提示用戶升級應用
歡迎界面正在升級應用程序的實現如圖 4.2 所示:
圖 4.2 歡迎界面正在升級應用
4.1.1 檢查升級功能實現
判斷當前用戶是否設置了自動更新應用程序,手機有沒有鏈接 wifi,如果有設置自動更新并且已鏈接 wifi,則從服務器獲取最新版本信息和本地版本對比,如果本地版本號低于服務器版本號,則彈出升級對話框供用戶選擇是否立即升級。
4.1.2 升級對話框顯示功能實現
升級對話框采用自定義的對話框,創建一個自定義對話框類繼承于 Dialog 類,其關鍵是編寫自定義布局文件和重寫構造方法,實現該對話框能在應用的其他功能模塊中能重用。
首先通過抽取樣式文件,達到樣式代碼的重用,然后通過重寫構造方法,根據不同的應用場景傳遞不同的參數,達到自定義對話框的重用。
4.2 應用程序主界面實現
應用程序主頁是展示程序的各個功能模塊,從而使用戶能夠快速進入到自己想使用的功能。該界面的另一個很重要的功能就是修改程序鎖密碼,在該界面連續三次點擊菜單按鈕彈出修改密碼對話框。
其中,應用程序主界面密碼認證的實現如圖 4.3 所示:
圖 4.3 應用程序主界面密碼認證
應用程序主界面功能列表的實現如圖 4.4 所示:
圖 4.4 應用程序主界面功能列表
4.3 程序鎖實現
通過幀布局實現 Android 界面的復雜布局,在頁面的底部放置兩個按鈕控制 FrameLayout 里的兩個 ListView 的顯示與否,模擬出 TabHost 的效果。由于已加鎖應用和未加鎖應用列表極其相似,所以這里只需在編寫一個 ListView 適配器,在適配器中通過一個 flag 標記區分當前適配器是未加鎖適配器還是已加鎖適配器。為了提升程序鎖的運行效率,不每次都從數據庫中獲取最新已加鎖應用程序列表,而是用兩個集合來分表保存已加鎖應用程序和臨時不需要保護的應用程序,在每一次收到鎖屏事件的時候清空臨時不需要保護的集合,在解鎖某一個應用程序的時候將該應用程序加入到臨時停止保護的集合中。需要注意的是,這里需要通過代碼的方式注冊監聽鎖屏事件的廣播和解屏事件的廣播。
已加鎖應用界面的實現如圖 4.5 所示:
圖 4.5 已加鎖應用界面
未加鎖應用界面的實現如圖 4.6 所示:
圖 4.6 未加鎖應用界面
程序鎖密碼認證界面的實現如圖 4.7 所示:
圖 4.7 程序鎖密碼認證界面
4.4 手機防盜實現
手機防盜界面主要是編寫 ListView 及其適配器,根據用戶點擊不同的條目彈出不同類型的自定義對話框,有些對話框功能不同,但是內容的格式完全相同,這就需要重寫自定義度畫框的構造方法,根據傳入參數的不同顯示不同內容和類型的自定義對話框。
手機防盜功能列表界面的實現如圖 4.8 所示:
圖 4.8 手機防盜功能列表界面
手機防盜界面設置安全手機號碼界面的實現如圖 4.9 所示:
圖 4.9 手機防盜綁定安全手機號碼界面
4.5 手機殺毒實現
在 Android 系統中,每一個應用程序都有一個簽名信息。通過反編譯 360 手機安全衛士,獲取離線病毒數據庫,該數據庫中存放了世面上已經存在的病毒應用的簽名的 MD5 信息。當用戶進入手機殺毒界面時,通過系統 API 提供的包管理器獲取系統中已安裝應用的簽名 MD5 信息,并與離線數據庫中的信息對比,如果該簽名信息在病毒數據庫中存在,則彈出對話框提示用戶卸載包含病毒信息應用的應用程序。
正在掃描病毒界面的實現如圖 4.10 所示:
圖 4.10 正在掃描病毒界面
發現病毒應用提示用戶卸載界面的實現如圖 4.11 所示:
圖 4.11 發現病毒應用提示用戶卸載界面
4.6 系統優化實現
通過系統 API 提供的包管理器獲取每個應用程序所占的存儲空間,并通過 ListView 展示給用戶,由于 Google 工程師為了提升 Android 系統的安全性,沒有 Root 權限不能刪除其他應用的數據信息,本應用的實現方式是當用戶點擊某個應用條目時,通過顯式意圖跳轉到系統自帶應用數據信息清理界面清理緩存數據。
系統優化界面的實現如圖 4.12 所示:
圖 4.12 系統優化界面
4.7 通訊衛士實現
通訊衛士界面主要也是便表列表和適配器,在注冊監聽電話到來和短信到來事件的廣播接收者時,需要將其優先級設置到最大值,以確保本應用最先收到這兩個廣播事件,在第一時間掛斷電話以及刪除最近一條通話記錄和短信記錄,避免用戶看到臟數據。
黑名單管理界面的實現如圖 4.13 所示:
圖 4.13 黑名單管理界面
添加黑名單界面的實現如圖 4.14 所示
圖 4.14 添加黑名單界面
4.8 軟件管理實現
通過系統 API 提供的包管理器,獲取手機中已安裝的應用程序并通過 ListView 展示給用戶,當用戶點擊某個應用條目后,通過彈出 PupupWindow 顯示功能對話框。當用戶點擊運行按鈕時,通過顯式意圖運行某個應用程序。當用戶點擊卸載按鈕時,通過隱式意圖調用系統軟件管理器卸載軟件。當用戶點擊分享按鈕時,通過調用系統短信發送器發送要分享的應用的基本信息以及在 GooglePlay 上的下載地址給好友。
軟件管理界面的實現如圖 4.15 所示:
圖 4.15 軟件管理界面
4.9 高級工具實現
高級工具主要提供手機號碼歸屬地查詢和常用號碼查詢功能。通過反編譯 QQ 通訊錄,獲取手機號碼歸屬地數據庫,將用戶輸入的手機號碼與該數據庫中的數據進行匹配獲取手機號碼歸屬地并顯示給用戶。通過互聯網獲取常用手機號碼,并錄入到自定義數據庫中,用戶查看常用號碼時將該數據庫中的數據顯示給用戶,當用戶點擊通用號碼條目時,通過隱式意圖跳轉撥號界面。
號碼歸屬地查詢界面的實現如圖 4.15 所示:
圖 4.16 號碼歸屬地查詢界面
常用號碼查詢界面的實現如圖 4.16 所示:
圖 4.17 常用號碼查詢界面
4.10 系統設置實現
系統設置界面的難點是通過自定義組合控件的方式實現自定義 view,從而使每一個設置條目只需要引用一個組件,實現代碼的復用。為了防止用戶打開 Android 系統自帶的設置界面關掉安全衛士中的某些服務出現臟數據,每次顯示該界面的時候必須在 onStart 方法內重新獲取最新數據。
系統設置界面的實現如圖 4.18 所示:
圖 4.18 系統設置界面
來電歸屬地運行效果界面的實現如圖 4.19 所示:
圖 4.19 來電歸屬地運行效果
第 5 章 結論與展望
5.1 結論
半年前,對畢業后有著強烈意愿從事 Android 開發工作的我,選擇了基于 Android 平臺的手機安全衛士的設計與實現這個課題作為我的畢業課題,在長達三個月的 Android 實習工作中學習到了從事 Android 開發工作必備的一些技能,例如屏幕適配、兼容多版本系統等,了解了移動應用程序開發的基本流程,同時在林老師的細心指導下完成了我的畢業設計作品《青蛙衛士》。
由于 Android 是基于 Linux 系統的,所以我嘗試著去學習 Linux 操作系統,在這半年里我學會了 Ubuntu 系統中開發人員必備一些技能,例如掌握 Ubuntu 系統下開發 Android 應用程序的能力,學會使用 Ubuntu 系統中的常用辦公軟件等。在編寫青蛙衛士的過程中鞏固了 Android 的基礎知識,通過看別人的技術博客掌握了 Android 中常見動畫效果、編寫自定義組件、編寫自定義組合控件以及加深了對 Framework 層 API 的印象,從以前看教學視頻學習編程過度到看技術博客學習編程,為以后的職業生涯打下了堅實的基礎。
5.2 進一步工作的方向
目前為止,青蛙衛士的功能基本上都實現了,但是在一些功能中仍存在不完善之處,例如手機防盜模塊沒有實現每次手機重啟完畢后調用系統前置攝像頭拍照以便手機丟失后獲取小偷的長相、沒有加入第三方平臺用戶登錄、沒有編寫后臺管理系統上傳和恢復用戶數據等。作為一個手機安全衛士,功能還需在日后的工作中進一步地考查調研并完善。
?? 資源
大小: 26.8MB
?? 資源下載:https://download.csdn.net/download/s1t16/87379046
總結
以上是生活随笔為你收集整理的基于 Android 平台的手机安全卫士的设计与实现【100010420】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移动魔百盒UNT413A卡刷固件
- 下一篇: js实现音频歌词同步