軟件工程畢業(yè)論文-android手機衛(wèi)士的設(shè)計與實現(xiàn)_第1頁
已閱讀1頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p>  Android手機衛(wèi)士的設(shè)計與實現(xiàn)</p><p><b>  摘 要</b></p><p>  Android手機衛(wèi)士系統(tǒng)主要幫助用戶更加方便的使用手

2、機,其中包括顯示系統(tǒng)軟件和本地軟件的詳細信息,刪除應(yīng)用程序,結(jié)束進程,清理緩存以便手機運行的更流暢;通訊錄添加黑名單可以幫助用戶免騷擾;程序鎖可以保護用戶的手機應(yīng)用,不讓他人隨便打開私密程序,比如通訊錄、短信等;常用號碼可以方便用戶查詢常用的一些電話號碼,方便人們的生活;手機殺毒可以保護手機不被病毒騷擾,使手機更加安全;短信備份可以防備短信丟失。</p><p>  Android手機衛(wèi)士系統(tǒng)主要是面向越來越多的

3、android手機用戶。其內(nèi)容包括通訊衛(wèi)士可以來電歸屬地顯示,來電黑名單/短信黑名單管理. 短信備份;軟件管理,顯示軟件的詳細信息,啟動,刪除、分享應(yīng)用程序;任務(wù)管理,管理系統(tǒng)任務(wù) 顯示系統(tǒng)內(nèi)存信息,殺死,批量殺死進程;系統(tǒng)優(yōu)化,清理手機內(nèi)存;隱私衛(wèi)士,加密程序。</p><p>  關(guān)鍵字:手機衛(wèi)士、安全、Android.</p><p><b>  Abstract</

4、b></p><p>  Android Mobile Guard system is mainly to help users more convenient to use mobile phones, including system software and local software displays detailed information, remove applications, the e

5、nd of the process, clearing the cache in order to run more smoothly phones; contacts can help users avoid adding blacklist harassment; program lock can protect the user's mobile phone applications, not just open the

6、privacy of others programs, such as contacts, text messages, etc.; frequently used numbers c</p><p>  Keywords: Phone Guardian, safe, android.</p><p><b>  目 錄</b></p><p

7、><b>  1.1 前言1</b></p><p>  1.2 課題研究的背景及意義1</p><p>  1.3 國內(nèi)外研究概況與發(fā)展趨勢1</p><p>  1.3.1國外研究情況:1</p><p>  1.3.2國內(nèi)研究情況:2</p><p>  1.4 設(shè)計的主要工

8、作2</p><p>  1.5 論文組織2</p><p>  2.開發(fā)環(huán)境和開發(fā)技術(shù)3</p><p>  2.1工具環(huán)境介紹3</p><p>  2.1.1 開發(fā)環(huán)境的選擇3</p><p><b>  2.2開發(fā)技術(shù)3</b></p><p>  2.

9、1.1 JAVA語言簡介3</p><p>  2.1.2 SQLite簡介3</p><p><b>  3.需求分析4</b></p><p>  3.1 設(shè)計思想4</p><p>  3.2 可行性分析4</p><p>  3.2.1 操作可行性4</p>&l

10、t;p>  3.2.2 技術(shù)可行性4</p><p>  3.2.3 經(jīng)濟可行性4</p><p>  3.3 功能需求5</p><p>  3.3.1 基本功能需求5</p><p><b>  4.系統(tǒng)設(shè)計6</b></p><p>  4.1 總體結(jié)構(gòu)設(shè)計6</p&

11、gt;<p>  4.1.1 系統(tǒng)設(shè)計基礎(chǔ)6</p><p>  4.1.3 系統(tǒng)模塊流程設(shè)計6</p><p><b>  5.系統(tǒng)實現(xiàn)9</b></p><p>  5.1設(shè)計主界面9</p><p>  5.2系統(tǒng)各個模塊功能9</p><p>  5.2.1 進程管

12、理界面9</p><p>  5.2.2程序管理13</p><p>  5.2.3病毒查殺16</p><p>  5.2.4騷擾攔截18</p><p>  5.2.5流量查詢19</p><p>  5.2.6高級工具20</p><p><b>  6.結(jié)束語24

13、</b></p><p><b>  6.1 總結(jié)24</b></p><p>  6.2 心得體會24</p><p><b>  致謝25</b></p><p><b>  參考文獻26</b></p><p><b>

14、;  1.緒論</b></p><p><b>  1.1 前言</b></p><p>  目前android是最為普遍的手機操作系統(tǒng),為了方便為數(shù)眾多的android手機用戶更加安全的使用手機,保護自己的隱私數(shù)據(jù)而建立android手機衛(wèi)士系統(tǒng)。其內(nèi)容包括黑名單的添加與刪除,短信的備份與恢復(fù),系統(tǒng)軟件和用戶軟件的的詳細信息、運行、卸載與分享,運行進程的

15、結(jié)束,程序的加密保護,清理手機內(nèi)存,常用電話號碼的查詢</p><p>  1.2 課題研究的背景及意義</p><p>  計算機便攜化是未來的發(fā)展趨勢,而Android作為最受歡迎的手機、平板電腦操作之一,其發(fā)展的上升勢頭是勢不可當?shù)?。而Android應(yīng)用選擇了Java作為其開發(fā)語言,對于Java來說也是一次極好的機會。Android系統(tǒng)就是一個開發(fā)式的手機和平板電腦的操作系統(tǒng),發(fā)展勢

16、頭十分迅猛。雖然Android面世的時間不長,但Android已經(jīng)對傳統(tǒng)的手機平臺(如Symbian)構(gòu)成了強大沖擊,Nokia宣布與Microsoft結(jié)盟,可能會逐步采用Windows Phone來代替自己的Symbian系統(tǒng)。業(yè)界部分人士預(yù)測,Android將會成為應(yīng)用最為廣泛的手機操作系統(tǒng)。隨著Android手機在人們?nèi)粘I畹拇蟊娀珹ndroid手機的安全也變得越來越重要。</p><p>  經(jīng)過大學

17、四年理論課程的學習,以及校內(nèi)校外的實踐,極大的豐富了自身的理論基礎(chǔ),并且也具備了一些處理簡單問題的能力,但即將踏上社會的我深知這還遠遠不夠,因此我利用了畢業(yè)設(shè)計的機會,在老師的指導下去完成一個具有挑戰(zhàn)性的,其具體應(yīng)用及社會服務(wù)相結(jié)合的項目,深知通過對它的開發(fā),將對我的能力有更高層次的突破。</p><p>  1.3 國內(nèi)外研究概況與發(fā)展趨勢</p><p>  1.3.1國外研究情況:&

18、lt;/p><p>  美國Mcafee公司的WaveSecure應(yīng)用程序沒有任何病毒掃描和防火墻保護,但它卻擁有一些重要的功能,比如,遠程鎖定你的Android設(shè)備,存儲關(guān)鍵數(shù)據(jù),并且能夠通過GPS技術(shù)跟蹤和定位設(shè)備,比較實用。</p><p>  Antivirus Free是一款流行的反病毒程序,下載量已經(jīng)超過50萬次,它掃描已經(jīng)安裝到你設(shè)備中的應(yīng)用程序,并檢查它們的數(shù)據(jù)庫中是否有惡意程

19、序,從本質(zhì)上來說,它是一款非常好用的惡意應(yīng)用檢測程序,值得借鑒。</p><p>  1.3.2國內(nèi)研究情況:</p><p>  國內(nèi)Android手機衛(wèi)士主要有360手機衛(wèi)士,騰訊手機管家等,功能比較齊全,界面友好,各個方面都比較成熟,為我提供了很好的借鑒。</p><p>  隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展和人們對安全性,高效性的要求,移動操作系統(tǒng)系統(tǒng)必須與時俱進,不

20、斷注入新的功能,以人們?nèi)粘I畹囊蟆K?,android手機衛(wèi)士系統(tǒng)必須保持進步與完善。</p><p>  1.4 設(shè)計的主要工作</p><p>  本系統(tǒng)包括進程管理模塊、程序管理模塊、病毒查殺模塊、騷擾攔截模塊、流量查詢模塊、高級功能模塊</p><p>  進程管理模塊主要實現(xiàn)查看系統(tǒng)中運行的用戶進程、系統(tǒng)進程,并統(tǒng)計進程運行總數(shù),顯示內(nèi)存剩余情況,以及

21、查看進程詳細信息。</p><p>  程序管理模塊主要實現(xiàn)列出手機中所有已安裝的應(yīng)用程序,包括系統(tǒng)程序和用戶程序,并可以運行程序、卸載程序、通過藍牙、QQ空間、新浪等分享程序。</p><p>  病毒查殺模塊主要完成病毒的掃描與查殺,包括快速掃描和全盤掃描。</p><p>  騷擾攔截模塊主要完成黑名單的添加與刪除,對黑名單列表人的來電進行攔截,提示手機已停機

22、,并自動掛斷電話。</p><p>  流量查詢模塊主要完成手機中各個程序的流量使用情況。</p><p>  高級工具主要包括短信的備份,短信的還原,程序鎖,常用電話號碼的查詢。</p><p><b>  1.5 論文組織</b></p><p>  論文全文共分為六章:</p><p>  

23、第一章緒論。主要介紹了論文選題的引言、對課題研究的背景及意義進行了分析,同時也對國內(nèi)外研究狀況及發(fā)展趨勢進行了介紹。</p><p>  第二章 開發(fā)環(huán)境和開發(fā)技術(shù)。這一章介紹了系統(tǒng)、系統(tǒng)的開發(fā)模式、開發(fā)環(huán)境等基礎(chǔ)知識。</p><p>  第三章 需求分析。這一章主要介紹了系統(tǒng)設(shè)計思想、可行性分析、功能和性能需求。</p><p>  第四章 系統(tǒng)設(shè)計。這一章主要

24、介紹了系統(tǒng)的總體結(jié)構(gòu)設(shè)計。</p><p>  第五章 系統(tǒng)實現(xiàn)。這一章介紹了系統(tǒng)的所有模塊和它的功能。</p><p>  第六章 結(jié)束語。對系統(tǒng)實現(xiàn)過程進行了總結(jié)。</p><p>  2.開發(fā)環(huán)境和開發(fā)技術(shù)</p><p><b>  2.1工具環(huán)境介紹</b></p><p>  2.1.

25、1 開發(fā)環(huán)境的選擇</p><p>  開發(fā)與運行的環(huán)境的選擇會影響到數(shù)據(jù)庫設(shè)計,本系統(tǒng)開發(fā)與運行環(huán)境如下:</p><p>  開發(fā)環(huán)境:Windows 7 HomeBasic</p><p>  開發(fā)工具:MyEclipse10.0UltraEdit</p><p>  數(shù)據(jù)庫管理:SQLite</p><p>

26、;  本系統(tǒng)主要采用JAVA與SQLite相結(jié)合的技術(shù)。利用MyEclipse10.0軟件來設(shè)計系統(tǒng)界面,使整個系統(tǒng)更具有吸引力和良好的價值</p><p><b>  2.2開發(fā)技術(shù)</b></p><p>  2.1.1 JAVA語言簡介</p><p>  Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言,是由Sun Micr

27、osystems公司于1995年5月推出的Java程序設(shè)計語言和Java平臺(即JavaSE, JavaEE, JavaME)的總稱。Java 技術(shù)具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應(yīng)用于個人PC、數(shù)據(jù)中心、游戲控制臺、科學超級計算機、移動電話和互聯(lián)網(wǎng),同時擁有全球最大的開發(fā)者專業(yè)社群。在全球云計算和移動互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢和廣闊前景。</p><p>  2.1.2 SQ

28、Lite簡介</p><p>  SQLite,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計目標是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時能夠跟很多程序語言相結(jié)合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、Pos

29、tgreSQL這兩款開源世界著名的數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。</p><p><b>  3.需求分析</b></p><p><b>  3.1 設(shè)計思想</b></p><p>  第一步確定系統(tǒng)要完成的功能模塊;第二步完成系統(tǒng)各個模塊的界面開發(fā);第三步完成各個模塊的程序設(shè)計。</p>

30、<p>  本系統(tǒng)包含六個模塊:進程管理、程序管理、病毒查殺、騷擾攔截、流量查詢、高級工具,各個模塊相互獨立,模塊內(nèi)部聯(lián)系緊密,符合高內(nèi)聚、低耦合的設(shè)計思想。</p><p><b>  3.2 可行性分析</b></p><p>  可行性分析是系統(tǒng)分析階段的第二項活動,它的主要目是進一步明確系統(tǒng)的目標、規(guī)模與功能,對系統(tǒng)開發(fā)背景、必要性和意義進行了調(diào)查分

31、析并根據(jù)需要和可能提出開發(fā)系統(tǒng)的初步方案與計劃??尚行苑治鍪菍ο到y(tǒng)進行全面、概要的分析。通過調(diào)查分析,本系統(tǒng)設(shè)計主要有以下三個可行性:</p><p>  3.2.1 操作可行性</p><p>  本系統(tǒng)操作簡單,易于理解,只需通過簡單指導,上手較快,運行環(huán)境要求低。</p><p>  3.2.2 技術(shù)可行性</p><p>  本課題采

32、用java語言進行開發(fā),面向?qū)ο蟪绦虻幕驹厥菍ο?面向?qū)ο蟪绦虻闹饕Y(jié)構(gòu)特點是:第一,程序一般由類的定義和類的使用兩部分組成,在主程序中定義各對象并規(guī)定它們之間傳遞消息的規(guī)律.第二,程序中的一切操作都是通過向?qū)ο蟀l(fā)送消息來實現(xiàn)的,對象接收到消息后,啟動有關(guān)方法完成相應(yīng)的操作.一個程序中涉及到的類,可以由程序設(shè)計者自己定義,也可以使用現(xiàn)成的類(包括類庫中為用戶提供的類和他人已構(gòu)建好的).盡量使用現(xiàn)成的類,是面向?qū)ο蟪绦蛟O(shè)計范型所倡導的

33、程序設(shè)計風格。Android豐富的API可以使系統(tǒng)完成更加方便。</p><p>  3.2.3 經(jīng)濟可行性</p><p>  本課題所使用的軟件都為免費公開發(fā)行版,不需要購買?,F(xiàn)在,Android手機的價格已經(jīng)十分低廉,使用非常普遍,為本次開發(fā)提供了設(shè)備支持,幾乎所有的Android手機都可以高效的運行使用Android手機衛(wèi)士系統(tǒng) 。</p><p><

34、b>  3.3 功能需求</b></p><p>  按照系統(tǒng)開發(fā)業(yè)務(wù)分析要求和原則,在與系統(tǒng)管理人員的充分溝通,整理出Android手機衛(wèi)士系統(tǒng)所需求的基本功能和用戶界面的一些需求,這些需求將作為系統(tǒng)分析和邏輯設(shè)計的依據(jù)。</p><p>  3.3.1 基本功能需求</p><p>  通過系統(tǒng)的分析,可得出該系統(tǒng)的基本功能需求如下:</

35、p><p>  進程管理:列出所有進程,顯示內(nèi)存使用情況,可以批量殺死選中進程</p><p>  程序管理:列出手機上安裝的用戶程序和系統(tǒng)程序,可以運行、卸載相關(guān)程序</p><p>  病毒查殺:可以快速掃描和全盤掃描手機內(nèi)存和SD卡,查殺病毒</p><p>  騷擾攔截:可以添加來電黑名單,攔截黑名單來電</p><p

36、>  流量查詢:可以查看各個程序的流量使用情況</p><p>  高級工具:包含短信的備份、還原,程序鎖,常用號碼查詢</p><p>  3.3.2 用戶界面需求</p><p>  系統(tǒng)界面要符合大多數(shù)人的使用習慣,界面美觀、按鈕得體,使用起來要方便。</p><p>  圖4-1系統(tǒng)組織結(jié)構(gòu)圖</p><p&

37、gt;<b>  4.系統(tǒng)設(shè)計</b></p><p>  4.1 總體結(jié)構(gòu)設(shè)計</p><p>  4.1.1 系統(tǒng)設(shè)計基礎(chǔ)</p><p>  系統(tǒng)總體設(shè)計原則是需要充分考慮系統(tǒng)框架的合理構(gòu)建理。其組織結(jié)構(gòu)圖如4-1</p><p><b>  所示。</b></p><p&

38、gt;  4.1.2 模塊設(shè)計</p><p>  本系統(tǒng)是一個典型的Android手機衛(wèi)士系統(tǒng),主要目標是讓使用它的用戶能很好地管理Android手機,方便用戶的使用,如任務(wù)管理功能、程序管理功能、病毒查殺功能、騷擾攔截功能,流量查詢以及高級工具功能</p><p>  4.1.3 系統(tǒng)模塊流程設(shè)計</p><p>  在具體模塊的設(shè)計過程中,將系統(tǒng)模塊以按鈕的形

39、式展現(xiàn)出來。</p><p>  任務(wù)管理:清理手機的運行進程,包括用戶進程和系統(tǒng)進程,顯示進程的詳細信息和進程的詳細信息,如同4-2所示。</p><p>  圖4-2任務(wù)管理流程圖</p><p>  圖4-3程序管理流程圖</p><p>  程序管理:列出手機中安裝的進程包括系統(tǒng)程序和用戶程序,對程序進行管理,例如卸載程序,運行程序,

40、分享程序需,如圖4-3所示。</p><p>  病毒查殺:掃描手機文件,對比文件MD5值是否與病毒MD5值匹配,查殺病毒,如圖4-4所示。</p><p>  圖4-4病毒查殺流程圖</p><p>  騷擾攔截:添加刪除黑名單,并更新黑名單數(shù)據(jù)庫,對黑名單號碼來電攔截,如圖4-5所示。</p><p>  圖4-5騷擾攔截流程圖</

41、p><p>  流量查詢:查詢各個程序鎖產(chǎn)生的流量,如圖4-6所示。</p><p>  圖4-6流量查詢流程圖</p><p>  圖4-6程序鎖流程圖</p><p>  高級工具:備份所有短信、從備份恢復(fù)短信,如圖6-7所示;給程序加鎖,如圖4-6所示;設(shè)置密碼后只有通過密碼驗證才能進入相關(guān)程序,提供常用公共服務(wù)電話號碼的查詢。</p

42、><p>  圖4-7短信備份恢復(fù)流程圖</p><p><b>  圖5-1 系統(tǒng)窗體</b></p><p><b>  5.系統(tǒng)實現(xiàn)</b></p><p><b>  5.1設(shè)計主界面</b></p><p>  民情檔案管理系統(tǒng)主頁面如圖5-1所示

43、:</p><p>  5.2系統(tǒng)各個模塊功能</p><p>  5.2.1 進程管理界面</p><p><b>  如圖5-2所示</b></p><p>  圖5-2 任務(wù)管理界面</p><p>  實現(xiàn)添加功能的部分代碼如下:</p><p>  lv_task

44、_manager.setOnItemClickListener(new OnItemClickListener() {</p><p>  public void onItemClick(AdapterView<?> parent, View view,</p><p>  int position, long id) {</p><p>  Objec

45、t obj = lv_task_manager.getItemAtPosition(position);</p><p>  if (obj instanceof TaskInfo) {</p><p>  TaskInfo taskinfo = (TaskInfo) obj;</p><p>  String packname = taskinfo.getPack

46、name();</p><p>  CheckBox cb = (CheckBox) view</p><p>  .findViewById(R.id.cb_task_checked);</p><p>  if ("cn.itcast.mobilesafe".equals(packname)</p><p>  ||

47、"system".equals(packname)</p><p>  || "android.process.media".equals(packname)) {</p><p>  cb.setVisibility(View.INVISIBLE);</p><p><b>  return;</b>&

48、lt;/p><p><b>  }</b></p><p>  if (taskinfo.isIschecked()) {</p><p>  taskinfo.setIschecked(false);</p><p>  // 更改checkbox的狀態(tài)</p><p>  cb.setChecke

49、d(false);</p><p><b>  } else {</b></p><p>  taskinfo.setIschecked(true);</p><p>  cb.setChecked(true);</p><p><b>  }</b></p><p><

50、;b>  }</b></p><p><b>  }</b></p><p><b>  });</b></p><p>  lv_task_manager</p><p>  .setOnItemLongClickListener(new OnItemLongClickListe

51、ner() {</p><p>  public boolean onItemLongClick(AdapterView<?> parent,</p><p>  View view, int position, long id) {</p><p>  Intent intent = new Intent(TaskManagerActivity.thi

52、s,</p><p>  AppDetailActivity.class);</p><p>  MyApplication myapp = (MyApplication) getApplication();</p><p>  Object obj = lv_task_manager</p><p>  .getItemAtPosition

53、(position);</p><p>  if (obj instanceof TaskInfo) {</p><p>  TaskInfo taskinfo = (TaskInfo) obj;</p><p>  myapp.taskinfo = taskinfo;</p><p>  startActivity(intent);<

54、/p><p><b>  }</b></p><p>  return false;</p><p><b>  }</b></p><p><b>  });</b></p><p>  fillData();</p><p>&l

55、t;b>  }</b></p><p><b>  /**</b></p><p>  * 填充listview的數(shù)據(jù)</p><p><b>  */</b></p><p>  private void fillData() {</p><p>  se

56、tTitleData();</p><p>  ll_task_manager_loading.setVisibility(View.VISIBLE);</p><p>  new Thread() {</p><p><b>  @Override</b></p><p>  public void run() {&l

57、t;/p><p>  taskInfoprovider = new TaskInfoProvider(</p><p>  TaskManagerActivity.this);</p><p>  listtaskinfos = taskInfoprovider.getAllTasks(runingappinfos);</p><p>  //

58、通知界面更新數(shù)據(jù)</p><p>  totalused = 0; // 所有程序占用的內(nèi)存信息 kb</p><p>  for (TaskInfo taskinfo : listtaskinfos) {</p><p>  totalused += taskinfo.getMemorysize();</p><p><b>  

59、}</b></p><p>  handler.sendEmptyMessage(0);</p><p><b>  }</b></p><p>  }.start();</p><p><b>  }</b></p><p><b>  /**<

60、/b></p><p>  * 設(shè)置title的數(shù)據(jù)</p><p><b>  */</b></p><p>  private void setTitleData() {</p><p>  tv_task_count.setText("進程數(shù)目: " + getProcessCount()

61、);</p><p>  tv_avail_memory.setText("剩余內(nèi)存"</p><p>  + TextFormater.getDataSize(getAvailMemoryInfo()));</p><p><b>  }</b></p><p><b>  /**<

62、/b></p><p>  * 獲取當前正在運行的進程的數(shù)目</p><p><b>  * </b></p><p><b>  * @return</b></p><p><b>  */</b></p><p>  private int g

63、etProcessCount() {</p><p>  runingappinfos = am.getRunningAppProcesses();</p><p>  return runingappinfos.size();</p><p><b>  }</b></p><p>  private long get

64、AvailMemoryInfo() {</p><p>  MemoryInfo outInfo = new ActivityManager.MemoryInfo();</p><p>  am.getMemoryInfo(outInfo);</p><p>  return outInfo.availMem;</p><p><b&g

65、t;  }</b></p><p>  public void killTask(View view) {</p><p>  int total = 0;</p><p>  int memorysize = 0;</p><p>  for (TaskInfo taskinfo : usertaskinfos) {</p

66、><p>  if (taskinfo.isIschecked()) {</p><p>  memorysize += taskinfo.getMemorysize();</p><p>  am.killBackgroundProcesses(taskinfo.getPackname());</p><p>  // listtaskinfo

67、s.remove(taskinfo);</p><p><b>  total++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  for (TaskInfo taskinfo : systemtaskinfos)

68、{</p><p>  if (taskinfo.isIschecked()) {</p><p>  memorysize += taskinfo.getMemorysize();</p><p>  am.killBackgroundProcesses(taskinfo.getPackname());</p><p>  // listt

69、askinfos.remove(taskinfo);</p><p><b>  total++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  fillData();</p><p><

70、;b>  }</b></p><p>  public void appSetting(View view) {</p><p>  Intent intent = new Intent(this,TaskSettingActivity.class);</p><p>  startActivityForResult(intent, 0);<

71、/p><p><b>  }</b></p><p>  private class TaskInfoAdapter extends BaseAdapter {</p><p>  public TaskInfoAdapter() {</p><p>  usertaskinfos = new ArrayList<Ta

72、skInfo>();</p><p>  systemtaskinfos = new ArrayList<TaskInfo>();</p><p>  for (TaskInfo taskinfo : listtaskinfos) {</p><p>  if (taskinfo.isSystemapp()) {</p><p&

73、gt;  systemtaskinfos.add(taskinfo);</p><p><b>  } else {</b></p><p>  usertaskinfos.add(taskinfo);</p><p><b>  }</b></p><p><b>  }</b&g

74、t;</p><p><b>  }</b></p><p><b>  5.2.2程序管理</b></p><p><b>  第一步:設(shè)計界面</b></p><p><b>  如圖5-3所示。</b></p><p>  圖

75、5-3 程序管理界面</p><p>  第二步:完成查詢功能:</p><p><b>  部分代碼如下:</b></p><p><b>  /**</b></p><p><b>  * </b></p><p>  * @param flag&l

76、t;/p><p>  * true 代表的是更新所有的程序 false 代表的是更新用戶的程序</p><p><b>  */</b></p><p>  private void initUI(final boolean flag) {</p><p>  ll_loading.setVisibil

77、ity(View.VISIBLE);</p><p>  new Thread() {</p><p><b>  @Override</b></p><p>  public void run() {</p><p>  isloading = true;</p><p>  if (flag)

78、 {</p><p>  provider = new AppInfoProvider(AppManagerActivity.this);</p><p>  appinfos = provider.getAllApps();</p><p><b>  //</b></p><p>  Message msg = ne

79、w Message();</p><p>  msg.what = GET_ALL_APP_FINISH;</p><p>  handler.sendMessage(msg);</p><p><b>  }else {</b></p><p>  provider = new AppInfoProvider(AppM

80、anagerActivity.this);</p><p>  appinfos = provider.getAllApps();</p><p>  userAppinfos = getUserApps(appinfos);</p><p>  Message msg = new Message();</p><p>  msg.what

81、= GET_USER_APP_FINISH;</p><p>  handler.sendMessage(msg);</p><p><b>  }</b></p><p><b>  }</b></p><p>  }.start();</p><p><b> 

82、 }</b></p><p>  switch (v.getId()) {</p><p>  case R.id.tv_app_manager_title:</p><p>  tv = (TextView) v;</p><p>  titletext = tv.getText().toString();</p>

83、<p>  if ("所有程序".equals(titletext)) {</p><p>  // 切換到用戶程序</p><p>  tv.setText("用戶程序");</p><p>  // 更新listview的列表</p><p>  userAppinfos = getUs

84、erApps(appinfos);</p><p>  adapter.setAppInfos(userAppinfos);</p><p>  adapter.notifyDataSetChanged();</p><p><b>  } else {</b></p><p>  // 切換到所有程序</p>

85、;<p>  tv.setText("所有程序");</p><p>  adapter.setAppInfos(appinfos);</p><p>  adapter.notifyDataSetChanged();</p><p><b>  }</b></p><p><b&

86、gt;  break;</b></p><p>  case R.id.ll_share:</p><p>  Log.i(TAG, "分享" + packname);</p><p>  Intent shareIntent = new Intent();</p><p>  shareIntent.setA

87、ction(Intent.ACTION_SEND);</p><p>  // shareIntent.putExtra("android.intent.extra.SUBJECT", "分享");</p><p>  shareIntent.setType("text/plain");</p><p> 

88、 // 需要指定意圖的數(shù)據(jù)類型</p><p>  shareIntent.putExtra(Intent.EXTRA_SUBJECT, "分享");</p><p>  shareIntent.putExtra(Intent.EXTRA_TEXT,</p><p>  "推薦你使用一個程序" + item.getAppnam

89、e());</p><p>  shareIntent = Intent.createChooser(shareIntent, "分享");</p><p>  startActivity(shareIntent);</p><p><b>  break;</b></p><p>  case R.

90、id.ll_uninstall:</p><p>  // 需求不能卸載系統(tǒng)的應(yīng)用程序</p><p>  if (item.isSystemApp()) {</p><p>  Toast.makeText(this, "系統(tǒng)應(yīng)用不能被刪除", 0).show();</p><p><b>  } else {

91、</b></p><p>  Log.i(TAG, "卸載" + packname);</p><p>  String uristr = "package:" + packname;</p><p>  Uri uri = Uri.parse(uristr);</p><p>  Inte

92、nt deleteIntent = new Intent();</p><p>  deleteIntent.setAction(Intent.ACTION_DELETE);</p><p>  deleteIntent.setData(uri);</p><p>  startActivityForResult(deleteIntent, 0);</p>

93、;<p><b>  }</b></p><p><b>  break;</b></p><p>  case R.id.ll_start:</p><p>  Log.i(TAG, "運行" + packname);</p><p>  // getPackag

94、eManager().queryIntentActivities(intent, flags);</p><p><b>  try {</b></p><p>  PackageInfo info = getPackageManager().getPackageInfo(</p><p><b>  packname,</b&

95、gt;</p><p>  PackageManager.GET_UNINSTALLED_PACKAGES</p><p>  | PackageManager.GET_ACTIVITIES);</p><p>  ActivityInfo[] activityinfos = info.activities;</p><p>  if (ac

96、tivityinfos.length > 0) {</p><p>  ActivityInfo startActivity = activityinfos[0];</p><p>  Intent intent = new Intent();</p><p>  intent.setClassName(packname, startActivity.name

97、);</p><p>  startActivity(intent);</p><p><b>  } else {</b></p><p>  Toast.makeText(this, "當前應(yīng)用程序無法啟動", 0).show();</p><p><b>  }</b>&l

98、t;/p><p>  } catch (Exception e) {</p><p>  Toast.makeText(this, "應(yīng)用程序無法啟動", 0).show();</p><p>  e.printStackTrace();</p><p><b>  }</b></p>&l

99、t;p><b>  5.2.3病毒查殺</b></p><p>  第一步:設(shè)計病毒查殺</p><p><b>  如圖5-4所示。</b></p><p>  圖5-4 病毒查殺界面</p><p>  第二步:部分代碼如下:</p><p>  private v

100、oid listPackages()</p><p><b>  {</b></p><p>  ArrayList<PInfo> apps = getInstalledApps(false);</p><p>  final int max = apps.size();</p><p>  for (int

101、 i = 0; i < max; i++)</p><p><b>  {</b></p><p>  if(flag == false)</p><p><b>  {</b></p><p>  item = new HashMap<String, Object>();&l

102、t;/p><p>  item.put("appname", apps.get(i).appname);</p><p>  item.put("icon", apps.get(i).icon);</p><p>  Message message = new Message(); </p><p>  

103、message.obj = item; </p><p>  progress = i*100/(max-1);</p><p><b>  try {</b></p><p>  Thread.sleep(50);</p><p>  } catch (InterruptedException e) {</p

104、><p>  e.printStackTrace();</p><p>  } </p><p>  mHandler.sendMessage(message); </p><p><b>  }</b></p><p><b>  else&l

105、t;/b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  圖5-5 騷擾攔截界面</p><p><b>  5.2.4騷擾攔截<

106、;/b></p><p>  第一步:界面設(shè)計,如圖5-5所示。</p><p><b>  第二步:部分代碼</b></p><p>  public void onCallStateChanged(int state, String incomingNumber) {</p><p>  super.onCal

107、lStateChanged(state, incomingNumber);</p><p>  switch (state) {</p><p>  case TelephonyManager.CALL_STATE_IDLE: // 處于靜止狀態(tài): 沒有呼叫</p><p>  endRingTime = System.currentTimeMillis();<

108、;/p><p>  long calltime = endRingTime-firstRingTime;</p><p>  Log.i(TAG,"calltime ="+calltime);</p><p>  if(firstRingTime<endRingTime && calltime<5000 &&am

109、p; calltime >0){</p><p>  Log.i(TAG,"響一聲的電話");</p><p>  endRingTime = 0;</p><p>  firstRingTime = 0;</p><p>  // 彈出來notification 通知用戶這是一個騷擾電話</p>&l

110、t;p>  showNotification(incomingNumber);</p><p><b>  }</b></p><p>  if(view!=null){</p><p>  windowmanager.removeView(view);</p><p>  view = null;</p&g

111、t;<p><b>  }</b></p><p>  // 再獲取一次系統(tǒng)的時間 </p><p><b>  break;</b></p><p>  case TelephonyManager.CALL_STATE_RINGING: // 零響狀態(tài)</p><p>  first

112、RingTime = System.currentTimeMillis();</p><p>  Log.i(TAG,"來電號碼為"+ incomingNumber);</p><p>  // 判斷incomingnumber是否在黑名單中</p><p>  if(dao.find(incomingNumber)){</p>&

113、lt;p><b>  //掛斷電話</b></p><p>  endCall();</p><p>  //deleteCallLog(incomingNumber);\</p><p>  //注冊一個內(nèi)容觀察者 觀察call_log的uri的信息 </p><p>  getContentResolver()

114、.registerContentObserver(CallLog.Calls.CONTENT_URI, true, new MyObserver(new Handler(),incomingNumber));</p><p><b>  }</b></p><p><b>  break;</b></p><p>  ca

115、se TelephonyManager.CALL_STATE_OFFHOOK: //接通電話狀態(tài)</p><p>  if(view!=null){</p><p>  windowmanager.removeView(view);</p><p>  view = null;</p><p><b>  }</b>&l

116、t;/p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  5.2.5流量查詢</b></p><p><b>  第一步:界

117、面設(shè)計</b></p><p><b>  如圖5-6所示。</b></p><p>  圖5-6 流量查詢界面</p><p>  第二步:部分代碼如下</p><p>  public TrafficAdapter() {</p><p><b>  super();&l

118、t;/b></p><p>  PackageManager pm = getPackageManager();</p><p>  Intent intent = new Intent();</p><p>  intent.setAction("android.intent.action.MAIN");</p><p

119、>  intent.addCategory("android.intent.category.LAUNCHER");</p><p>  resovleInfos = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);</p><p><b>  }</b&g

120、t;</p><p><b>  5.2.6高級工具</b></p><p><b>  第一步:界面設(shè)計</b></p><p><b>  如圖5-7所示。</b></p><p>  圖5-7 高級工具界面</p><p>  第二步:部分代碼如下

121、</p><p>  new Thread() {</p><p><b>  @Override</b></p><p>  public void run() {</p><p><b>  // 開啟看門狗</b></p><p>  while (flag) {<

122、;/p><p><b>  try {</b></p><p>  // 判斷屏幕是否是鎖屏狀態(tài)</p><p>  if(keyguardManager.inKeyguardRestrictedInputMode()){</p><p><b>  //清空臨時的集合</b></p>&

123、lt;p>  tempstopapps.clear();</p><p><b>  }</b></p><p>  ////lockapps 信息為最新的</p><p>  //lockapps = dao.getAllApps();</p><p>  // 得到當前正在運行程序的包名

124、</p><p>  // 返回系統(tǒng)里面的任務(wù)棧的信息 , taskinfos的集合里面只有一個元素</p><p>  // 內(nèi)容就是當前正在運行的進程對應(yīng)的任務(wù)棧</p><p>  List<RunningTaskInfo> taskinfos = am.getRunningTasks(1);</p><p>  Runni

125、ngTaskInfo currenttask = taskinfos.get(0);</p><p>  // 獲取當前用戶可見的activity 所在的程序的包名</p><p>  String packname = currenttask.topActivity</p><p>  .getPackageName();</p><p>

126、  Log.i(TAG, "當前運行" + packname);</p><p>  if (lockapps.contains(packname)) {</p><p>  // todo : 如果當前的應(yīng)用程序 需要臨時的被終止保護</p><p>  if (tempstopapps.contains(packname)) {</p&

127、gt;<p>  // return;</p><p>  sleep(1000);</p><p><b>  continue;</b></p><p><b>  }</b></p><p>  Log.i(TAG, "需要鎖定" + packname);&l

128、t;/p><p>  // todo 彈出來一個鎖定的界面 讓用戶輸入密碼</p><p>  lockappintent.putExtra("packname", packname);</p><p>  startActivity(lockappintent);</p><p><b>  } else {<

129、;/b></p><p>  // todo 放行執(zhí)行</p><p><b>  }</b></p><p>  sleep(1000);</p><p>  } catch (Exception e) {</p><p>  e.printStackTrace();</p>

130、<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  }.start();</p><p><b>  /**</b></p><p>  *

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論