官术网_书友最值得收藏!

3.1 模塊概述

3.1.1 功能介紹

通訊衛(wèi)士模塊的主要功能是進行黑名單攔截,對添加到黑名單中的號碼進行電話攔截或短信攔截。在添加黑名單時有兩種方式,一種是直接在編輯框中輸入電話號碼以及聯(lián)系人姓名,另一種是從聯(lián)系人列表中選擇。接下來分別針對這兩種方式進行講解。

1.手動添加

當(dāng)沒有添加黑名單時,會展示通訊衛(wèi)士主界面,此時點擊“添加黑名單”按鈕,會進入添加黑名單界面,該界面中可以直接輸入聯(lián)系人號碼和姓名,選中電話攔截、短信攔截的復(fù)選框,然后點擊“添加”按鈕,此時會將該號碼添加到黑名單數(shù)據(jù)庫中,并將黑名單信息展示到通信衛(wèi)士主界面中,如圖3-1所示。

圖3-1 手動輸入黑名單信息

2.從列表選擇

在添加黑名單界面中,點擊“從聯(lián)系人中添加”按鈕時,會跳轉(zhuǎn)到聯(lián)系人列表界面,點擊其中的任意一個聯(lián)系人,此時該聯(lián)系人的電話號碼和姓名會顯示在添加黑名單界面的編輯框中,點擊下方的“添加”按鈕,可將該號碼添加到黑名單中,并在主界面中展示,如圖3-2所示。

圖3-2 從聯(lián)系人列表添加黑名單

3.1.2 開發(fā)流程圖

通訊衛(wèi)士模塊的開發(fā)流程有些復(fù)雜,為了讓大家更好地理解該模塊的邏輯,接下來繪制一個流程圖,具體如圖3-3所示。

圖3-3 通訊衛(wèi)士模塊流程圖

從圖3-3可以看出,當(dāng)進入通訊衛(wèi)士界面時,首先會判斷是否有黑名單,如果有則在主界面中顯示黑名單列表,否則顯示“您還沒有添加黑名單”。添加黑名單有兩種方式:一種是直接添加;另一種是從聯(lián)系人列表中選擇,然后指定電話攔截或者短信攔截后添加黑名單,此時黑名單信息就會展示在主界面中。

3.1.3 代碼結(jié)構(gòu)

通訊衛(wèi)士模塊代碼量較大,主要邏輯包括兩套主界面布局的動態(tài)切換、選擇聯(lián)系人、黑名單數(shù)據(jù)庫的增刪查、ListView的分頁查詢等,通過一個圖例來展示通訊衛(wèi)士模塊的代碼結(jié)構(gòu),如圖3-4所示。

圖3-4 chapter03代碼結(jié)構(gòu)

下面按照結(jié)構(gòu)順序依次介紹chapter03包中的文件,具體如下:

●BlackContactAdapter.java:用于填充黑名單的數(shù)據(jù)適配器;

●ContactAdapter.java:用于填充手機聯(lián)系人信息的數(shù)據(jù)適配器;

●BlackNumberDao.java:用于對黑名單中的數(shù)據(jù)進行增、刪、查等操作;

●BlackNumberOpenHelper.java:用于創(chuàng)建黑名單數(shù)據(jù)庫,繼承自SQLiteOpenHelper;

●BlackContactInfo.java:用于存儲黑名單信息的實體類,包括phoneNumber、contactName字段以及攔截模式;

●ContactInfo.java:聯(lián)系人信息的實體類,包括id、name、phone字段;

●InterceptCallReceiver.java:攔截電話的廣播接收者;

●InterceptSmsReceiver.java:攔截短信的廣播接收者;

●TestBlackNumberDao.java:操作黑名單數(shù)據(jù)的測試類;

●ContactInfoParser.java:聯(lián)系人信息的解析器,用于從系統(tǒng)通訊錄中讀取聯(lián)系人信息;

●AddBlackNumberActivity.java:添加黑名單界面;

●ContactSelectActivity.java:顯示系統(tǒng)聯(lián)系人界面;

●SecurityPhoneActivity.java:顯示黑名單信息界面。

需要注意的是,通訊衛(wèi)士模塊中的電話攔截功能涉及進程間通信,因此在第3章中引入了兩個AIDL文件: ITelephony.aidl和NeighboringCellInfo.aidl,這兩個文件分別位于android.telephony包和com.android.internal.telephony包中。在開發(fā)電話攔截功能時,需要創(chuàng)建這兩個包將AIDL文件復(fù)制到工程中。

主站蜘蛛池模板: 申扎县| 岳阳市| 海伦市| 黑河市| 资阳市| 杭锦后旗| 嵩明县| 津南区| 叶城县| 禹城市| 崇仁县| 景德镇市| 缙云县| 龙山县| 丰都县| 乡城县| 沾化县| 铅山县| 吕梁市| 潞西市| 什邡市| 磐安县| 青龙| 雅安市| 鸡泽县| 衡山县| 吉林市| 长沙县| 永清县| 临沭县| 安宁市| 霍林郭勒市| 抚远县| 普格县| 辽阳市| 舞钢市| 越西县| 东乡族自治县| 平昌县| 济宁市| 石阡县|