一種基于安卓平臺(tái)的設(shè)置代理服務(wù)器聯(lián)網(wǎng)的方法
【專利說(shuō)明】一種基于安卓平臺(tái)的設(shè)置代理服務(wù)器聯(lián)網(wǎng)的方法
[0001]
技術(shù)領(lǐng)域
[0002]本發(fā)明屬移動(dòng)終端聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別是一種基于安卓平臺(tái)的設(shè)置代理服務(wù)器聯(lián)網(wǎng)的方法。
【背景技術(shù)】
[0003]Android (安卓)是由Google公司和開(kāi)放手機(jī)聯(lián)盟(0ΗΑ)領(lǐng)導(dǎo)開(kāi)發(fā)的,一種基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng)。Android平臺(tái)架構(gòu)從底到高主要由Linux內(nèi)核層、系統(tǒng)運(yùn)行庫(kù)層、應(yīng)用程序框架層以及應(yīng)用層組成。其中最底層的Linux內(nèi)核層主要包括以C語(yǔ)言開(kāi)發(fā)的Linux 2.6內(nèi)核和與移動(dòng)設(shè)備相關(guān)的驅(qū)動(dòng)程序,而系統(tǒng)運(yùn)行庫(kù)層主要包括一些C/C++庫(kù)以及Android運(yùn)行庫(kù)。應(yīng)用程序框架層(Android framework)可以看作是Android對(duì)外提供的平臺(tái)api,方便應(yīng)用程序開(kāi)發(fā)者開(kāi)發(fā)Android平臺(tái)的應(yīng)用程序,最上層的應(yīng)用層就是基于Android framework開(kāi)發(fā)的各種應(yīng)用軟件(APP)。
[0004]在這些眾多的APP中,有很多APP需要顯示網(wǎng)頁(yè),為此Android提供了一個(gè)特殊的系統(tǒng)控件webview,通過(guò)在自身APP中嵌入webview控件就可以達(dá)到顯示網(wǎng)頁(yè)的目的,而瀏覽器這個(gè)APP本身就是通過(guò)webview控件專門提供網(wǎng)頁(yè)瀏覽的應(yīng)用程序。
[0005]Android WebView從最初到現(xiàn)在的5.X大致經(jīng)過(guò)了以下三個(gè)階段的演變過(guò)程:
第一階段從android開(kāi)始發(fā)布到android4.0,在這個(gè)階段android webview的底層實(shí)現(xiàn)采用的是開(kāi)源的webkit內(nèi)核。
[0006]第二階段從Android 4.1至4.3,這個(gè)階段其底層實(shí)現(xiàn)依舊是采用開(kāi)源的webkit內(nèi)核,但是在webview的Framework層已經(jīng)引入了工廠模式,將內(nèi)核與上層API接口分離開(kāi)來(lái),一方面是為了抽象接口,更是為了在后續(xù)的版本中將webkit內(nèi)核替換為chromium內(nèi)核做準(zhǔn)備。
[0007]第三階段從androicM.4往后,這個(gè)階段在保持WebView的API兼容性的前提下,其底層實(shí)現(xiàn)已經(jīng)成功的從缺省WebKit內(nèi)核切換到Chromium的內(nèi)核。
[0008]Chromium是Google的一個(gè)開(kāi)源的瀏覽器項(xiàng)目,其設(shè)計(jì)思想基于簡(jiǎn)單、高速、穩(wěn)定、安全等理念,在架構(gòu)上使用了基于KDE開(kāi)源項(xiàng)目KHTML的Webkit渲染引擎(自28版起改為由WebKit所分支的Blink排版引擎),并采用Google獨(dú)家開(kāi)發(fā)出的V8引擎以提升解譯JavaScript的效率,而且設(shè)計(jì)了“沙盒”、“黑名單”、“無(wú)痕瀏覽”等功能來(lái)實(shí)現(xiàn)穩(wěn)定與安全的網(wǎng)頁(yè)瀏覽環(huán)境。
[0009]在目前的android系統(tǒng)中,用戶只能設(shè)置系統(tǒng)代理,而且一旦設(shè)置了系統(tǒng)代理,所有的基于webview控件的應(yīng)用,包括系統(tǒng)瀏覽器本身就默認(rèn)通過(guò)系統(tǒng)代理聯(lián)網(wǎng)了。在計(jì)算機(jī)瀏覽器上大多都提供了設(shè)置瀏覽器代理的功能,但是在android系統(tǒng)中除了設(shè)置系統(tǒng)代理,當(dāng)前的瀏覽器本身沒(méi)有提供一個(gè)設(shè)置瀏覽器本身代理的途徑,一旦設(shè)置了系統(tǒng)代理,包括瀏覽器在內(nèi)的所有APP必須通過(guò)系統(tǒng)代理聯(lián)網(wǎng),無(wú)法實(shí)現(xiàn)不同APP的不同代理需求。
【發(fā)明內(nèi)容】
[0010]本發(fā)明要解決的問(wèn)題是提供一種基于安卓平臺(tái)的設(shè)置代理服務(wù)器聯(lián)網(wǎng)的方法,該方法可以實(shí)現(xiàn)android系統(tǒng)中的APP本身的代理與系統(tǒng)代理隔離起來(lái),特別是瀏覽器代理的相對(duì)獨(dú)立性,滿足不同APP的聯(lián)網(wǎng)要求。
[0011]本發(fā)明公開(kāi)的基于安卓平臺(tái)的設(shè)置代理服務(wù)器聯(lián)網(wǎng)的方法,包括以下步驟:
11)擴(kuò)展android webview framework,為 webview 新增一個(gè)設(shè)置代理的 API ;
12)在APP中添加基于PreferenceActivity框架的設(shè)置代理UI界面,所述UI界面具有“不使用代理”、“使用系統(tǒng)代理”和“手動(dòng)設(shè)置代理”模塊,以及設(shè)置代理IP和端口號(hào)的豐旲塊。
[0012]也可以在不增加設(shè)置代理的API的情況下,實(shí)現(xiàn)本發(fā)明的基于安卓平臺(tái)的設(shè)置代理服務(wù)器聯(lián)網(wǎng)的方法,此種狀況下該方法包括以下步驟:
21)更改APP系統(tǒng)庫(kù),讓其不再接受系統(tǒng)代理發(fā)出的廣播,達(dá)到瀏覽器代理獨(dú)立于系統(tǒng)代理,不受系統(tǒng)代理影響的目的。所述更改APP系統(tǒng)庫(kù)包括更改chromium net庫(kù)java層代碼,通過(guò)動(dòng)態(tài)注冊(cè)廣播接收器ProxyReceiver,該廣播接收器默認(rèn)接收系統(tǒng)網(wǎng)絡(luò)代理發(fā)送改變后所發(fā)出的廣播 Proxy.PR0XY_CHANGE_ACT I ON ; ProxyReceiver 的 onReceive 中接收到自定義廣播后,從intent中解析出用戶代理數(shù)據(jù),通過(guò)JNI調(diào)用網(wǎng)絡(luò)庫(kù)Native方法,將代理數(shù)據(jù)進(jìn)一步設(shè)置到網(wǎng)絡(luò)庫(kù)Native層,從而達(dá)到設(shè)置代理的目的;如果用戶選擇的是使用系統(tǒng)代理,則從數(shù)據(jù)庫(kù)中讀取用戶設(shè)置的系統(tǒng)代理,同樣通過(guò)上述自定義廣播,攜帶代理數(shù)據(jù),最終發(fā)送到網(wǎng)絡(luò)庫(kù)底層。
[0013]22)在APP中添加基于PreferenceActivity框架的設(shè)置代理UI界面,所述UI界面具有“不使用代理”、“使用系統(tǒng)代理”和“手動(dòng)設(shè)置代理”模塊,以及設(shè)置代理IP和端口號(hào)的模塊,UI界面的設(shè)置項(xiàng)的信息最終通過(guò)SharePreference以key — value的方式保存到和瀏覽器相關(guān)的本地文件中;
步驟21)和22)的順序可以調(diào)換。
[0014]所述APP優(yōu)選瀏覽器。
[0015]本發(fā)明的基于安卓平臺(tái)的設(shè)置代理服務(wù)器聯(lián)網(wǎng)的方法,可以單獨(dú)應(yīng)用于具體的APP (比如瀏覽器)本身或增加設(shè)置代理的API,使具體APP具有設(shè)置代理的功能,將APP本身通過(guò)的代理與系統(tǒng)代理分離開(kāi)來(lái),給予用戶更多的選擇,操作更加人性化,大大提高了用戶體驗(yàn)。
【附圖說(shuō)明】
[0016]圖1是本發(fā)明設(shè)置代理的UI的截圖。
【具體實(shí)施方式】
[0017]下面結(jié)合附圖,對(duì)本發(fā)明提出的一種基于安卓平臺(tái)的設(shè)置代理服務(wù)器聯(lián)網(wǎng)的方法進(jìn)行詳細(xì)說(shuō)明。
[0018]以瀏覽器為例,本發(fā)明公開(kāi)的一種基于安卓平臺(tái)的設(shè)置代理服務(wù)器聯(lián)網(wǎng)的方法包括以下步驟: 11)擴(kuò)展android webview framework,為 webview 新增一個(gè)設(shè)置代理的 API ;