摘 要:來電防火墻主要基于黑白名單的電話和短信過濾功能,再結(jié)合數(shù)據(jù)庫(kù)的使用,達(dá)到來電或者信息屏蔽黑名單的作用。黑名單連接到數(shù)據(jù)庫(kù),可以進(jìn)行簡(jiǎn)單的添加、修改、刪除等操作。來電或者收到信息之后,手機(jī)自動(dòng)搜索黑名單,將來電號(hào)碼與黑名單中的號(hào)碼進(jìn)行比較,如果有改號(hào)碼在黑名單中,則手機(jī)直接將該電話或者短信屏蔽掉。此外還有基于GPS的手機(jī)防盜功能;電話錄音和留言功能;隱私空間。系統(tǒng)的界面使用Photoshop的按鈕控件、XML語(yǔ)言界面設(shè)計(jì)使操作更簡(jiǎn)單。系統(tǒng)使用SQLite數(shù)據(jù)庫(kù),Eclipse開發(fā)工具,Android SDK開發(fā)環(huán)境,利用Google Android API、java語(yǔ)言來實(shí)現(xiàn)。最后,對(duì)系統(tǒng)采用模擬器預(yù)覽效果,并對(duì)系統(tǒng)進(jìn)行了部署和真實(shí)的體驗(yàn)測(cè)試。
關(guān)鍵詞:Android;智能手機(jī);防火墻
中圖分類號(hào):TN929.53;TP393.08
目前隨著移動(dòng)設(shè)備越來越普及以及移動(dòng)設(shè)備的硬件的提升,移動(dòng)設(shè)備的功能越來越完善。移動(dòng)設(shè)備的系統(tǒng)平臺(tái)也日漸火熱起來。3G時(shí)代的到來也是助推移動(dòng)設(shè)備的火熱發(fā)展的一個(gè)大因素。目前國(guó)內(nèi)最常見的移動(dòng)開發(fā)平臺(tái)有Symbian,iPhone,Windows Phone以及當(dāng)下正在逐步興起的Android。目前為止國(guó)內(nèi)已經(jīng)有很多Android系統(tǒng)用戶[1]。
1 需求分析
1.1 黑/白名單的電話和短信過濾功能分析
1.1.1 黑名單可選擇模式
黑名單的有三種攔截模式:只攔截電話,只攔截短信,兩者都攔截。在黑名單表中有姓名、電話、攔截模式等字段。實(shí)現(xiàn)原理:軟件啟動(dòng)后有一個(gè)服務(wù))service)在后臺(tái)運(yùn)行,在服務(wù)中注冊(cè)有一個(gè)監(jiān)聽器,監(jiān)聽電話的狀態(tài),當(dāng)有電話來時(shí),狀態(tài)會(huì)變成響鈴狀態(tài),在這里可以取得來電的號(hào)碼。這時(shí)遍歷表中的黑名單,看是否有號(hào)碼和來電號(hào)碼匹配,如果匹配就是該攔截的號(hào)碼,這里就把電話結(jié)束掉,并寫入攔截表中,彈出通知告知有電話被攔截[2]。
短信的攔截和電話攔截不一樣,有兩種實(shí)現(xiàn)方法:
(1)接收系統(tǒng)短信廣播:當(dāng)收到短信時(shí),Android系統(tǒng)會(huì)發(fā)出一個(gè)廣播,通知收到短信,攔截短信基于Android中的廣播機(jī)制。Android中的廣播機(jī)制是所有注冊(cè)了該廣播監(jiān)聽器的程序都收到廣播(只要先收到廣播的應(yīng)用程序沒有結(jié)束掉該廣播),當(dāng)收到廣播就會(huì)觸發(fā)收到廣播的事件,可以在這里處理短信,本程序采用這種方法[3]。
優(yōu)點(diǎn):可以攔截來信在狀態(tài)欄的顯示通知,適合短信攔截。
缺點(diǎn):可以發(fā)展成MU,在后臺(tái)悄悄的收/發(fā)短信
(2)應(yīng)用觀察者模式,監(jiān)聽短信數(shù)據(jù)庫(kù),操作短信內(nèi)容:當(dāng)系統(tǒng)收到短信時(shí),會(huì)將短信寫入短信數(shù)據(jù)庫(kù),可以注冊(cè)一個(gè)監(jiān)聽器來監(jiān)聽短信數(shù)據(jù)庫(kù)的變化。當(dāng)短信數(shù)據(jù)庫(kù)變化時(shí)就觸發(fā)這個(gè)事件,在這里可以處理短信。
優(yōu)點(diǎn):操作方便,適合簡(jiǎn)單的短信應(yīng)用。
缺點(diǎn):來信會(huì)在狀態(tài)欄顯示通知信息。
1.1.2 白名單攔截模式
白名單攔截是指除了名單中有的號(hào)碼,其它號(hào)碼都攔截。這種攔截方式可以真正做到把不想接聽的電話和不想收到的短信全部排除在外。白名單攔截方式和黑名單類似。流程:有電話進(jìn)來,從數(shù)據(jù)庫(kù)中查詢所有的號(hào)碼,看看是不是白名單中的號(hào)碼,如果是就接聽電話,否則就掛斷,寫入攔截?cái)?shù)據(jù)表,彈出通知有攔截電話;短信的操作和這類似。
1.1.3 多種方式添加黑/白名單
添加黑/白名單主要是依賴Android中的內(nèi)容提供者(ContentProvider)和內(nèi)容訪問者(ContentResolver)的機(jī)制,在這里主要是使用了系統(tǒng)的ContentProvider。
(1)系統(tǒng)聯(lián)系人:可直接從系統(tǒng)聯(lián)系人中添加名單到黑/白名單,利用上面提到的系統(tǒng)提供的ContentProvider來訪問聯(lián)系人數(shù)據(jù)庫(kù),查詢所有聯(lián)系人的名字和號(hào)碼信息。可批量添加到黑/白名單數(shù)據(jù)庫(kù)。
(2)通話記錄:可從通話記錄中添加名單到黑/白名單,同樣使用系統(tǒng)提供的ContentProvider來訪問通話記錄數(shù)據(jù)庫(kù)。
(3)短信記錄:可從短信記錄添加名單到黑/白名單,也是使用了系統(tǒng)提供的ContentProvider來訪問通話記錄數(shù)據(jù)庫(kù)。從短信記錄添加進(jìn)去的是短信的內(nèi)容和號(hào)碼,而不是名字。
(4)手動(dòng)輸入:當(dāng)然,我們可以手動(dòng)輸入要添加的號(hào)碼和名字。
1.2 關(guān)鍵字的短信過濾功能分析
原理分析:注冊(cè)廣播接收器,監(jiān)聽系統(tǒng)短信廣播,操作短信內(nèi)容: 當(dāng)系統(tǒng)收到短信時(shí),會(huì)向系統(tǒng)發(fā)送廣播,可以注冊(cè)一個(gè)監(jiān)聽器來接收系統(tǒng)的短信廣播。在這里可以查看短信中包括的內(nèi)容是否有我們的關(guān)鍵字,如果有就攔截該短信;如果沒有就不做處理。關(guān)鍵字有系統(tǒng)自帶關(guān)鍵字和手動(dòng)添加關(guān)鍵字。
2 程序設(shè)計(jì)
2.1 基于黑/白名單的電話過濾功能設(shè)計(jì)
2.1.1 設(shè)計(jì)思路
當(dāng)有來電時(shí)取得來電號(hào)碼,把這個(gè)號(hào)碼交給來電處理類PhoneHandler,在這個(gè)類里面從數(shù)據(jù)庫(kù)中取出數(shù)據(jù)對(duì)比這個(gè)號(hào)碼符合我們的什么操作。主要是基于一張名單表(list),在這張表里有來電號(hào)碼(list_phone),姓名(list_name),名單類型(list_type),攔截類型(list_method),攔截說明(list_method_bak)等。首先判斷攔截模式,然后判斷是否在名單中,最后判斷號(hào)碼類型。判斷出結(jié)果后來決定是否攔截這個(gè)電話或這條短信。
2.1.2 關(guān)鍵代碼及解釋
在本程序中注冊(cè)了一個(gè)電話監(jiān)聽器和一個(gè)短信廣播接收器。電話監(jiān)聽器時(shí)刻監(jiān)聽Android電話服務(wù)程序,電話有三種狀態(tài):空閑,響鈴和摘機(jī)。平時(shí)電話處于空閑狀態(tài),當(dāng)有電話進(jìn)來時(shí)就進(jìn)入響鈴狀態(tài),在這里能得到來電號(hào)碼,這時(shí)把來電號(hào)碼交給電話處理類PhoneHandler來處理。
還有一個(gè)廣播接收器程序,它負(fù)責(zé)監(jiān)聽短信廣播。當(dāng)有短信進(jìn)來時(shí),Android系統(tǒng)會(huì)向整個(gè)系統(tǒng)發(fā)送一個(gè)廣播,所有注冊(cè)了該廣播接收器的程序都能接收到這個(gè)廣播,但是廣播的發(fā)送是有順序的,從優(yōu)先級(jí)別高的到優(yōu)先級(jí)別低的。在本程序中把收聽廣播的優(yōu)先級(jí)別設(shè)置為1000,它會(huì)先收到短信廣播。
2.2 基于關(guān)鍵字的短信過濾功能的設(shè)計(jì)
設(shè)計(jì)思路:在廣播中取到短信的內(nèi)容,利用java.lang.String類的contains(key)方法可以判別短信內(nèi)容是否key這個(gè)關(guān)鍵字,如果包涵就判別這條短信是我們?cè)摂r截的垃圾短信。在數(shù)據(jù)庫(kù)中有一張關(guān)鍵字表(smskey),當(dāng)收到短信后去遍歷這張表中的關(guān)鍵字,就可以得到我們的結(jié)果。
3 結(jié)束語(yǔ)
經(jīng)過測(cè)試,本系統(tǒng)實(shí)現(xiàn)了預(yù)定要實(shí)現(xiàn)的功能,并且運(yùn)行良好。實(shí)現(xiàn)的基本功能有基于黑/白名單的電話和短信攔截功能,基于關(guān)鍵字的短信攔截功能等。在實(shí)現(xiàn)這些功能的同時(shí),仍然還有需要改進(jìn)的東西,用戶體驗(yàn)效果待改進(jìn)等。
參考文獻(xiàn):
[1]劉兵,吳煜煜.Linux實(shí)用教程[M].北京:中國(guó)水利水電出版社,2004,48.
[2]柯元旦.Android內(nèi)核剖析[M].北京:電子工業(yè)出版社,2011,32.
[3]孫曉宇.Android手機(jī)界面管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2009.