天天看點

手機安全衛士第十天(總結篇)

手機安全衛士第十天實作的功能:

手機程式鎖功能。

程式鎖的原理:首先建立一個資料庫,剛開始所有的程式都不在資料庫裡面,及查詢到的資料都是未加鎖應用,使用者可以點選加鎖按鈕進應用進行加鎖,點選之後該應用添加到資料庫中。

界面實作:首先建立一個應用鎖界面,界面包括了兩個Fragment,點選文字"已加鎖"跳轉到已加鎖Fragment界面,點選"未加鎖"跳轉到未加鎖Fragment界面,這兩個界面都是由應用程式組成,差別就是在不在資料庫中,兩個界面都是使用ListView構成和前面寫過的應用程式和程序大同小異(代碼見附件)。

加鎖之後本應該建立一個服務,在設定中心中提供給使用者選擇師傅開啟服務,若開啟了服務那麼點選了加鎖的應用程式會跳轉到一個界面上,在這個界面要求使用者輸入秘密,若密碼正确則能夠正常進入程式,若不正确則一直停留在該界面,值得注意的是,如果這個界面的啟動模式不是 singleInstance, 那麼輸入密碼之後會跳轉到前一個應用的界面,所有需要給這個界面設定一個啟動模式。activity的四種啟動模式如下:

<span style="font-size:14px;"> standard  
        模式啟動模式,每次激活Activity時都會建立Activity,并放入任務棧中。  
. singleTop  
        如果在任務的棧頂正好存在該Activity的執行個體, 就重用該執行個體,否者就會建立新的執行個體并放入棧頂
(即使棧中已經存在該Activity執行個體,隻要不在棧頂,都會建立執行個體)。  
. singleTask  
        如果在棧中已經有該Activity的執行個體,就重用該執行個體(會調用執行個體的onNewIntent())。重用時,
會讓該執行個體回到棧頂,是以在它上面的執行個體将會被移除棧。如果棧中不存在該執行個體,将會建立新的執行個體放入棧中。   
. singleInstance  
        在一個新棧中建立該Activity執行個體,并讓多個應用共享改棧中的該Activity執行個體。
一旦改模式的Activity的執行個體存在于某個棧中,任何應用再激活改Activity時都會重用該棧中的執行個體,
其效果相當于多個應用程式共享一個應用,不管誰激活該Activity都會進入同一個應用中。</span>  
           

回顧手機安全衛士用過的知識點:

1. PackageManager

>包管理器,擷取手機裡面每個apk的資訊(清單檔案資訊)

2. 網絡請求

>  * URL

>  * HttpUrlConntetion

3. JSON解析

> * JSONObject  

> * JSONArray

> * GSON

4. 對話框彈出

> AlertDialog

> AlertDialog.Builder

5. 代碼的組織結構

> * 按照業務邏輯

> * 按照代碼的的類型

6. 幾種上下文差別

> * getApplicationContext();

> * xxxActivity.this

> * getContext(); 虛拟的上下文

7. ANR(應用程式無響應)

> 耗時的操作 放在子線程

8. 子線程更新UI

> * Handler + message

> * runOnUiThread(runnable)

9. 自定義的土司

>  子線程列印土司

10. 動畫效果

> * alpha

> * trans

> * scale

> * rotate

11. 覆寫安裝

> * 包名一緻

> * 簽名一緻

12. 安裝apk

<span style="font-size:14px;">Intent intent = new Intent();
        intent.setAction("android.intent.action.VIEW");
        intent.addCategory("android.intent.category.DEFAULT");
        intent.setDataAndType(Uri.fromFile(new File(Environment
                                .getExternalStorageDirectory(), "temp.apk")),
                                "application/vnd.android.package-archive");
        startActivityForResult(intent, 0);</span>
           

13. 多線程斷點下載下傳的開源項目

> * afinal

> * xutils

14. GridView

15. ListView

16. Adpater資料擴充卡

> * BaseAdapter

17. 布局填充器服務

> * View.inflate();

> * getSystemService();

> * LayoutInflater.from();

18. 狀态選擇器 xml

> xxxselector.xml

> 根據不同的狀态顯示不同的背景

19. 簡單的自定義控件

20. 自定義對話框

>設定對話框顯示的view對象

21. 密碼資料加密

>md5算法

22. 複雜ui寫法

>由簡單的布局組合起來

23. 樣式 style

>相同的控件的樣式抽取出來

24. 抽取父類

>提取公共的邏輯

>定義抽象方法

25. 手勢識别器

>GestureDector

26. activity切換的動畫

>overridePendingTransition(R.anim.in,R.anim.out);

27. TelephonyManager

>電話管理器服務

>getSystemService();

>擷取sim串号

28. SharedPerference

>參數:儲存配置檔案。

29. 廣播接受者

> 開啟啟動的廣播接受者。

> 檢查sim是否發生變化(手機防盜的原理)

30. 短信廣播接受者

>有序廣播,可以中斷攔截,設定優先級

>無序廣播,不可以别攔截

31. 多媒體播放

>MediaPlayer

32. 手機定位的方式

>* GPS

>* WIFI

>* 基站

33. 火星坐标系統

>中國地圖經緯度都是偏移過的

34. 服務

>沒有界面,背景長期運作

>stopSelf();停止服務

35. 自定義組合控件

> * 自定組合控件

> * 自定義屬性

>         <declare-styleable name="SettingView">

            <attr name="title" format="string" />

            <attr name="desc" format="string" />

            </declare-styleable>

>* 聲明命名空間

>        xmlns:itheima="http://schemas.android.com/apk/res/com.itheima.mobileguard"

36. 資料庫

> * 建立

> * 增删改查

37. ListView的優化

> * 複用緩存的view對象 convertView

> * 減少子孩子被查詢的次數 viewHolder

38. 資料庫顯示方式

> * 分頁加載資料(記憶體問題)

> * 分批加載資料 (使用者體驗)

39. 資料庫内容和listview的同步顯示

> adapter.notfiyDataSetChange();

40. 事件的傳遞

> 外--->内--->外

41. 短信和電話攔截

> 短信攔截 基于号碼,關鍵字 廣播接受者攔截

> 電話攔截 反射調用隐藏的API

42. 删除呼叫記錄

> getContentResolver 内容提供者的解析器。

43. 内容觀察者

> 觀察呼叫記錄的生成

44. startActivityForResult

> 開啟activity擷取傳回值

45. 動畫插入器

> cycleInterpolator

46. Verbose 服務

>系統服務 震動服務

47. 使用外部的資料庫檔案

> * 放在asset目錄

> * splash界面拷貝到系統目錄

> * SQLiteDataBase.openDataBase(path,factory,mode);

48. 資料庫的優化

> 提取備援資料

49. 正規表達式

>  ^1[34578]\d{9}$

50. 土司的原理

> 窗體管理器

> windowManager

51. 觸摸事件

> 根據觸摸情況,移動控件的位置。

52. 内容提供者操作短信

53. 抽取接口定義回調函數(重要)

> 通過接口定義回調函數

> 回調函數就是不是我們的代碼實作,而是由别的代碼去實作。

54. 快捷圖示

>發送廣播,讓桌面建立快捷方式

55. 複雜listview的界面顯示

> 應用程式item

> 文本item

> 控制條目的位置

56. listview的滾動監聽器

57.啟動應用

58.分享應用

59.檢視應用資訊

60. activityManager

>getSystemService();

>活動管理器

>擷取正在運作的程序

>擷取正在運作的服務

>擷取目前手機的任務棧資訊

61. 帶checkbox的listview

>禁用checkbox的點選事件

>取消checkbox的焦點

62. 自定義控件的風格

> 修改checkbox

> 修改進度條

> 修改textview

> 找到sdk 的res目錄下的style.xml

63. 殺死程序

> * 殺死别人  am.killBackgroudProcess();

> * 自殺 android.os.Process.kill(pid);

64. 周遊集合的時候不可以修改目前集合的大小

65. 特殊的廣播接受者

> 隻能用代碼注冊才會生效

> 電量變化, 螢幕鎖屏的廣播接受者

66. 任務棧

> 一般情況一個應用程式一個任務棧

> 手機裡面有很多個任務棧

> 使用者操作的應用程式的任務棧在最前面

67. activity的啟動模式

> * singletop

> * singleinstance

> * singletask

> * standard

68. 防毒軟體的原理

> * 特征碼+資料庫

> * 主動防禦 軟體的行為

69. 橫豎屏切換的生命周期

70. 資料庫的自動更新

> 基于版本号 更新sql語句

終于完成了這個項目,自學android也有好幾個月了,算是基礎不怎麼好的,完成的也比較累,還有幾個功能都是沒有實作的,以後會越來越好的

GitHub下載下傳位址:https://github.com/AndroidDai/mobliesafe