版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 題 目: 信息同步系統(tǒng)的設計與實現(xiàn) 摘 要: 本系統(tǒng)正是針對那些惡意應用的,詳細的闡述了信息同步系統(tǒng)之手機安全衛(wèi)士的開發(fā)流程,包括手機防盜、通訊衛(wèi)士、軟件管理、進程管理、手機殺毒、系統(tǒng)優(yōu)化、高級工具、設置中心等功能模塊。整體項目采用MVC框架,是對安卓知識點的綜合應用,用到的技術(shù)有(活動,服務,廣播接收者,內(nèi)容提供這,喚醒機制,數(shù)據(jù)庫,自定義標題,自定義控件,小部件,進程間通訊等)。本項目是通過xml文件對頁面進行布局,后臺使用java代碼實現(xiàn)每一個業(yè)務邏輯流程,完成頁面中的每一個需求。本系統(tǒng)采用安卓作為開發(fā)平臺,使用安卓開發(fā)工具作為開發(fā)環(huán)境,后臺使用sqlite數(shù)據(jù)庫進行數(shù)據(jù)的存儲和傳輸,
2、來實現(xiàn)手機衛(wèi)士之的數(shù)據(jù)共享和業(yè)務邏輯的交互。關(guān)鍵詞:手機衛(wèi)士;安卓開發(fā)平臺;MVC框架;數(shù)據(jù)庫。Abstract: The system is aimed at those malicious applications, describes in detail the mobile phone security guards of the development process, including mobile phone anti-theft, communication guard, software management, process management, mobile phon
3、e antivirus, system optimization, advanced tools, set the center function module. The whole project using the MVC framework, it is a comprehensive application for Android knowledge point, use of Technology (activities, services, broadcast receivers, content providing this, wake-up mechanism, databas
4、e, a custom title, custom controls, small parts, inter process communication). The project is through the XML file layout on the page, the background using java code to achieve each business logic process, complete the needs of each page in the. This system uses the android as the development platfo
5、rm, using the Android development tools as the development environment, the background using SQLite database for data storage and transmission, interaction to achieve mobile phone guards of the sharing of data and business logic.Keywords: mobile phone guardian, Android development platform, MVC fram
6、ework, database目錄目錄21 緒論31.1 背景31.2 開發(fā)思路和計劃32 系統(tǒng)需求52.1 范圍52.2 定義52.3功能需求53 模塊一:系統(tǒng)優(yōu)化模塊53.1 系統(tǒng)優(yōu)化-界面設計53.2 系統(tǒng)優(yōu)化-代碼實現(xiàn)71、CleanCacheActivity類實現(xiàn)系統(tǒng)加速的清理緩存界面類,內(nèi)部實現(xiàn)了掃面手機及清理緩存的操作。主要代碼如下:72、 清單文件需要添加權(quán)限:165.4 系統(tǒng)優(yōu)化處理流程163.5 子功能模塊的測試174 模塊二:高級工具模塊204.2高級工具處理的流程圖204.3主要類介紹214.4 高級工具頁面設計214.5高級工具代碼實現(xiàn)221、更新MainActivi
7、ty的item點擊事件處理代碼,點擊“高級工具”項目時打開對應的頁面:222、AToolsActivity的實現(xiàn)代碼:223、高級工具-號碼歸屬地查詢244、 創(chuàng)建android component:NumberQueryActivity,并勾選layout文件的創(chuàng)建選項:numberqueryactivity_layout.xml。265、NumberQueryActivity的實現(xiàn)代碼:276、 測試頁面284.6高級工具-常用號碼查詢,ExpandableListView的使用305模塊三:設置中心模塊375.1設置中心的更新377.2設置中心代碼實現(xiàn)387.3設置中心-更改歸屬地顯示風
8、格417.4測試運行效果528 技術(shù)控制:541. Dalvik文件格式分析542. Dex文件解析錯誤!未定義書簽。2.1 定位修改文件錯誤!未定義書簽。10 參考文獻:571 緒論1.1 背景 本次開發(fā)是由安博教育和學校發(fā)起,學生自主選題的一次畢業(yè)設計。 伴隨智能手機的不斷普及,移動互聯(lián)網(wǎng)的快速發(fā)展,伴隨著3G時代的到來,智能手機的廣泛應用,安卓成為活躍用戶量最大的移動終端操作系統(tǒng),并且安卓操作系統(tǒng)是開放源代碼的,所以每個人都可以開發(fā)出一個安卓應用,導致安卓的應用數(shù)不勝數(shù)。由于安卓的開源,導致每個人可以對安卓端的軟件進行編寫,而有些開發(fā)者在應用中加入一些非法的代碼,竊取用戶的隱私,使得手機
9、的安全問題日益明顯,手機安全問題關(guān)注度日益提高。 隨著Android平臺的發(fā)展和普及,Android已經(jīng)成為惡意代碼的下一個肆虐之地,這里我把一些漏洞的原理和技巧加以整理總結(jié),起到拋磚引玉的作用,希望大家能夠把這些知識用到以后反病毒和軟件保護的工作中. 不需要懂得信息安全的人是幸福的,而我們的職責是保障他們的幸福。1.2 開發(fā)思路和計劃 在和指導老師多次交流后,確定實現(xiàn)方案的要點和工作計劃。 整體項目采用MVC框架,是對android知識點的綜合應用,用到的技術(shù)有 activity,service,broadcast,content provider,Notification,sqlite數(shù)據(jù)
10、庫,自定義title,自定義控件,widget,aidl進程間通訊等,本項目所實現(xiàn)的功能如下: 手機防盜: 根據(jù)預設參數(shù),判斷手機是否被盜,根據(jù)自定義協(xié)議發(fā)送手機中SIM卡的信息和手機的位置信息給安全號碼??蛇h程通過短信指令,給手機設置鎖屏密碼,遠程鎖定手機屏幕,遠程格式化手機SD卡,恢復出廠設置,極大的保護用戶的隱私安全,通過aidl注冊admin設備,一般用戶無法卸載該程序。 通訊衛(wèi)士: 來電號碼歸屬地顯示,來電歸屬地位置的調(diào)整,來電黑名單/短信黑名單管理。電話短信備份和還原,保護手機的數(shù)據(jù)和通訊安全。 軟件管理: 系統(tǒng)軟件和本地軟件,可以顯示軟件的詳細信息,啟動、刪除、分享應用程序。程序
11、鎖可以指定要保護的程序,用戶進入要保護的程序之前必須輸入密碼。 進程管理: 顯示當前系統(tǒng)運行的進程信息,顯示系統(tǒng)內(nèi)存信息,可以殺死某個進程,批量殺死進程,通過桌面widget實時展現(xiàn)用戶當前的手機內(nèi)存狀態(tài)。 手機殺毒: 從服務器下載最新的病毒庫,根據(jù)程序的包名和程序的數(shù)字簽名識別病毒,提示用戶并查殺惡意軟件,使吸費木馬無處可藏。 系統(tǒng)優(yōu)化: 清理手機緩存,提高手機性能,優(yōu)化電池管理。 高級工具: 手機號碼歸屬地查詢,更改歸屬地位置,常用號碼查詢。 設置中心: 可以對是否開啟防盜、是否開啟程序鎖服務等功能進行設置,還可以更改來去電顯示的風格。 和研究任何其它軟件項目一樣,我做的畢業(yè)設計也經(jīng)歷了從
12、選題,調(diào)研,熟悉開發(fā)環(huán)境,實驗關(guān)鍵技術(shù),查找類似的相關(guān)系統(tǒng)的資料;系統(tǒng)概要設計,數(shù)據(jù)庫結(jié)構(gòu)設計,功能模塊開發(fā),功能模塊測試,系統(tǒng)調(diào)試和系統(tǒng)試運行和修改。如下1.2-1開發(fā)計劃流程圖:選題調(diào)查研究資料查詢開發(fā)環(huán)境熟悉學習android技術(shù)概要設計數(shù)據(jù)庫的設計功能模塊開發(fā)和詳細設計功能模塊測試項目調(diào)試和修改需求分析圖1.2-1開發(fā)計劃流程圖2 系統(tǒng)需求2.1 范圍本次開發(fā)的系統(tǒng)為信息同步系統(tǒng)之手機安全衛(wèi)士。用于廣大Android手機用戶,包括手機防盜 、通訊衛(wèi)士、 軟件管理 、進程管理、 流量統(tǒng)計 、手機殺毒、系統(tǒng)優(yōu)化、高級工具、設置中心2.2 定義MS MobileSafe (信息同步系統(tǒng)之手機
13、安全衛(wèi)士)的縮寫。2.3功能需求1) 系統(tǒng)優(yōu)化: 清理手機緩存,提高手機性能,優(yōu)化電池管理。2) 高級工具: 手機號碼歸屬地查詢,更改歸屬地位置,常用號碼查詢。3) 設置中心: 可以對是否開啟防盜、是否開啟程序鎖服務等功能進行設置,還可以更改來去電顯示的風格。3 模塊一 系統(tǒng)優(yōu)化模塊3.1 系統(tǒng)優(yōu)化-界面設計1)布局: Android提供的ProgressBar Widget控件,ScrollView內(nèi)部只能放一個 布局,然后在改布局內(nèi)在添加其他的布局;情況A:ScrollView-LinearLayout-LinearLayout情況B:ScrollView-RelativeLayout-L
14、inearLayoutA,B情況,都會導致ScrollView的滾動條占用一定空間只有將A,B情況的最后LinearLayout改成RelativeLayout,才能是ScrollView的滾動條不占用空間每個item的布局文件:MainActivity添加代碼: case 6: /系統(tǒng)優(yōu)化 intent = new Intent(MainActivity.this, CleanCacheActivity.class); startActivity(intent); break;3.2 系統(tǒng)優(yōu)化-代碼實現(xiàn)1、CleanCacheActivity類實現(xiàn)系統(tǒng)加速的清理緩存界面類,內(nèi)部實現(xiàn)了掃面手機
15、及清理緩存的操作。主要代碼如下:1) 利用Handler來實現(xiàn)UI線程的更新的,通過配合Handler來實現(xiàn)timer功能的。 private Handler handler = new Handler() public void handleMessage(android.os.Message msg) switch (msg.what) case ADD_ONE_RESULT: /掃描到一條 final String packname = (String) msg.obj; / 獲取這些應用程序的圖標,名稱,展現(xiàn)在界面上。 View child = View.inflate(getAppl
16、icationContext(), R.layout.cache_item, null); / 為child注冊一個監(jiān)聽器。清理緩存調(diào)用系統(tǒng)的緩存清理功能。 child.setOnClickListener(new View.OnClickListener() 點擊child時響應的點擊事件 Override public void onClick(View v) / 判斷SDK的版本號 if (Build.VERSION.SDK_INT = 9) / 跳轉(zhuǎn)至“清理緩存”的界面(可以通過:設置-應用程序-點擊任意應用程序后的界面) Intent intent = new Intent(); i
17、ntent.setAction(android.settings.APPLICATION_DETAILS_SETTINGS); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setData(Uri.parse(package: + packname); startActivity(intent); else Intent intent = new Intent(); intent.setAction(ent.action.VIEW); intent.addCategory(Intent.CATEGORY_DEFAU
18、LT); intent.addCategory(ent.category.VOICE_LAUNCH); intent.putExtra(pkg, packname); startActivity(intent); ); / 為child中的控件設置數(shù)據(jù) ImageView iv_icon = (ImageView) child.findViewById(R.id.iv_cache_icon); iv_icon.setImageDrawable(getApplicationIcon(packname); TextView tv_name = (TextView) child
19、.findViewById(R.id.tv_cache_name); tv_name.setText(getApplicationName(packname); TextView tv_size = (TextView) child.findViewById(R.id.tv_cache_size); tv_size.setText(緩存大小 : + Formatter.formatFileSize(getApplicationContext(), cacheinfo.get(packname); / 將child添加到ll_clean控件上。 ll_clean.addView(child);
20、break; ; ; 2) 掃描出帶有緩存的應用程序 private void scanPackages() / 開啟一個異步任務掃描帶有緩存的應用程序 new AsyncTask() / 存儲手機中所有已安裝的應用程序的包信息 List packinfos; Override protected Void doInBackground(Void. params) int i = 0; for (PackageInfo info : packinfos) / 獲取到應用程序的包名信息 String packname = info.packageName; getSize(pm, packnam
21、e); i+; try Thread.sleep(100); catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace(); publishProgress(i); return null; Override protected void onPreExecute() cacheinfo = new HashMap(); packinfos = pm.getInstalledPackages(0); pd.setMax(packinfos.size(); tv_clean_cache_s
22、tatus.setText(開始掃描.); super.onPreExecute(); Override protected void onPostExecute(Void result) tv_clean_cache_status.setText(掃描完畢. + 發(fā)現(xiàn)有 + cacheinfo.size() + 個緩存信息); super.onPostExecute(result); Override protected void onProgressUpdate(Integer. values) pd.setProgress(values0); tv_clean_cache_status.
23、setText(正在掃描 + values0 + 條目); super.onProgressUpdate(values); .execute(); 3)通過反射的方式調(diào)用packageManager中的方法 private void getSize(PackageManager pm, String packname) try / 獲取到getPackageSizeInfo。調(diào)用getPackageSizeInfo方法需要在清單文件中配置權(quán)限信息: Method method = pm.getClass().getDeclaredMethod(getPackageSizeInfo, new C
24、lassString.class, IPackageStatsObserver.class); / 執(zhí)行g(shù)etPackageSizeInfo方法 method.invoke(pm, new Objectpackname, new MyObersver(packname); catch (Exception e) e.printStackTrace(); 4) 執(zhí)行packageManager中的getPackageSizeInfo方法時需要傳入IPackageStatsObserver.Stub接口,該接口通過aidl調(diào)用。 private class MyObersver extends I
25、PackageStatsObserver.Stub private String packname; public MyObersver(String packname) this.packname = packname; Override public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException / 以下是根據(jù)ApplicationsState代碼中的SizeInfo對象中定義的 / 緩存大小 long cacheSize = pStats.cacheSize;
26、 / 代碼大小 long codeSize = pStats.codeSize; / 數(shù)據(jù)的大小 long dataSize = pStats.dataSize; / 判斷這個包名對應的應用程序是否有緩存,如果有,則存入到集合中。 if (cacheSize 0) Message msg = Message.obtain(); msg.what = ADD_ONE_RESULT; msg.obj = packname; handler.sendMessage(msg); cacheinfo.put(packname, cacheSize); 5) 獲取到應用程序的名稱 private Stri
27、ng getApplicationName(String packname) try PackageInfo packinfo = pm.getPackageInfo(packname, 0); return packinfo.applicationInfo.loadLabel(pm).toString(); catch (Exception e) e.printStackTrace(); return packname; 6) 獲取到應用程序的圖標 private Drawable getApplicationIcon(String packname) try PackageInfo pac
28、kinfo = pm.getPackageInfo(packname, 0); return packinfo.applicationInfo.loadIcon(pm); catch (Exception e) e.printStackTrace(); return getResources().getDrawable(R.drawable.ic_launcher); / 顯示掃描的進度 private ProgressBar pd; / 提示掃描的狀態(tài) private TextView tv_clean_cache_status; / 系統(tǒng)的包管理器 private PackageManag
29、er pm; / 顯示所有帶有緩存的應用程序信息 private LinearLayout ll_clean; / 存放緩存信息 private Map cacheinfo; private Handler handler = new Handler() public void handleMessage(android.os.Message msg) switch (msg.what) case ADD_ONE_RESULT: /掃描到一條 final String packname = (String) msg.obj; / 獲取這些應用程序的圖標,名稱,展現(xiàn)在界面上。 View chil
30、d = View.inflate(getApplicationContext(), R.layout.cache_item, null); / 為child注冊一個監(jiān)聽器。 child.setOnClickListener(new View.OnClickListener() / 點擊child時響應的點擊事件 Override public void onClick(View v) / 判斷SDK的版本號 if (Build.VERSION.SDK_INT = 9) / 跳轉(zhuǎn)至“清理緩存”的界面(可以通過:設置-應用程序-點擊任意應用程序后的界面) Intent intent = new I
31、ntent(); intent.setAction(android.settings.APPLICATION_DETAILS_SETTINGS); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setData(Uri.parse(package: + packname); startActivity(intent); else Intent intent = new Intent(); intent.setAction(ent.action.VIEW); intent.addCategory(Intent.CATE
32、GORY_DEFAULT); intent.addCategory(ent.category.VOICE_LAUNCH); intent.putExtra(pkg, packname); startActivity(intent); ); / 為child中的控件設置數(shù)據(jù) ImageView iv_icon = (ImageView) child.findViewById(R.id.iv_cache_icon); iv_icon.setImageDrawable(getApplicationIcon(packname); TextView tv_name = (TextV
33、iew) child.findViewById(R.id.tv_cache_name); tv_name.setText(getApplicationName(packname); TextView tv_size = (TextView) child.findViewById(R.id.tv_cache_size); tv_size.setText(緩存大小 : + Formatter.formatFileSize(getApplicationContext(), cacheinfo.get(packname); / 將child添加到ll_clean控件上。 ll_clean.addVie
34、w(child); break; ; ; 7) 掃描出帶有緩存的應用程序 private void scanPackages() / 開啟一個異步任務掃描帶有緩存的應用程序 new AsyncTask() / 存儲手機中所有已安裝的應用程序的包信息 List packinfos; Override protected Void doInBackground(Void. params) int i = 0; for (PackageInfo info : packinfos) / 獲取到應用程序的包名信息 String packname = info.packageName; getSize(p
35、m, packname); i+; try Thread.sleep(100); catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace(); publishProgress(i); return null; Override protected void onPreExecute() cacheinfo = new HashMap(); packinfos = pm.getInstalledPackages(0); pd.setMax(packinfos.size(); tv_cle
36、an_cache_status.setText(開始掃描.); super.onPreExecute(); Override protected void onPostExecute(Void result) tv_clean_cache_status.setText(掃描完畢. + 發(fā)現(xiàn)有 + cacheinfo.size() + 個緩存信息); super.onPostExecute(result); Override protected void onProgressUpdate(Integer. values) pd.setProgress(values0); tv_clean_cac
37、he_status.setText(正在掃描 + values0 + 條目); super.onProgressUpdate(values); .execute(); 8)通過反射的方式調(diào)用packageManager中的方法,這里每次掃描到一個項目就以消息的形式通知主線程,添加到結(jié)果列表里去。獲取緩存大小調(diào)用了PackageManager的隱藏函數(shù)getPackageSizeInfo: private void getSize(PackageManager pm, String packname) try / 獲取到getPackageSizeInfo。調(diào)用getPackageSizeInf
38、o方法需要在清單文件中配置權(quán)限信息: Method method = pm.getClass().getDeclaredMethod(getPackageSizeInfo, new ClassString.class, IPackageStatsObserver.class); / 執(zhí)行g(shù)etPackageSizeInfo方法 method.invoke(pm, new Objectpackname, new MyObersver(packname); catch (Exception e) e.printStackTrace(); 9) 執(zhí)行packageManager中的getPackag
39、eSizeInfo方法時需要傳入IPackageStatsObserver.Stub接口,該接口通過aidl調(diào)用。 private class MyObersver extends IPackageStatsObserver.Stub private String packname; public MyObersver(String packname) this.packname = packname; Override public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteEx
40、ception / 以下是根據(jù)ApplicationsState代碼中的SizeInfo對象中定義的 / 緩存大小 long cacheSize = pStats.cacheSize; / 代碼大小 long codeSize = pStats.codeSize; / 數(shù)據(jù)的大小 long dataSize = pStats.dataSize; / 判斷這個包名對應的應用程序是否有緩存,如果有,則存入到集合中。 if (cacheSize 0) Message msg = Message.obtain(); msg.what = ADD_ONE_RESULT; msg.obj = packna
41、me; handler.sendMessage(msg); cacheinfo.put(packname, cacheSize); 10)獲取到應用程序的名稱 private String getApplicationName(String packname) try PackageInfo packinfo = pm.getPackageInfo(packname, 0); return packinfo.applicationInfo.loadLabel(pm).toString(); catch (Exception e) e.printStackTrace(); return packname; 11)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西省南昌市2025-2026學年度第一學期外國語學校教育集團期末測試七年級數(shù)學試卷及答案
- 河南省許昌市鄢陵縣彭店二中2025-2026學年七年級上冊英語期末試卷(含答案無聽力原文及音頻 )
- 福建省福州福清市2025-2026學年上學期期末七年級數(shù)學試卷(含答案)
- 2026屆遼寧省名校聯(lián)盟高三1月期末考試歷史試題(含答案)
- 古詩詞誦讀《鵲橋仙·纖云弄巧》課件2025-2026學年統(tǒng)編版高一語文必修上冊
- 鋼筋混凝土保護層控制技術(shù)
- 2026年人力資源管理師招聘與配置知識要點練習(含答案)
- 2026河南鄭州市住房保障和房地產(chǎn)管理局鄭東新區(qū)服務中心招聘工作人員12名參考考試題庫及答案解析
- 2026年阜陽市臨泉縣直水務和順幼兒園招聘保育員備考考試試題及答案解析
- 飛機換季培訓課件
- GB/T 70.4-2025緊固件內(nèi)六角螺釘?shù)?部分:降低承載能力內(nèi)六角平圓頭凸緣螺釘
- 2026年電商年貨節(jié)活動運營方案
- 譯林版英語六年級上冊專題05 首字母填詞100題專項訓練含答案
- 耳穴壓豆治療失眠
- 2025至2030全球及中國航空航天閉模鍛件行業(yè)調(diào)研及市場前景預測評估報告
- 天興洲現(xiàn)狀條件分析
- 檢驗科甲流實驗室檢測流程
- 醫(yī)院安全生產(chǎn)培訓教育制度
- 臨時道路施工臨時設施施工方案
- 2025新疆生產(chǎn)建設兵團草湖項目區(qū)公安局面向社會招聘警務輔助人員考試參考試題及答案解析
- 電吹管保養(yǎng)維護知識培訓課件
評論
0/150
提交評論