国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Android中基于回調(diào)接口的確權(quán)機(jī)制

2016-08-18 07:37:25林莉蕓曾雪松
關(guān)鍵詞:調(diào)用客戶端對(duì)象

林莉蕓 曾雪松

(信陽(yáng)職業(yè)技術(shù)學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,河南 信陽(yáng) 464000)

?

Android中基于回調(diào)接口的確權(quán)機(jī)制

林莉蕓曾雪松

(信陽(yáng)職業(yè)技術(shù)學(xué)院 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,河南 信陽(yáng) 464000)

對(duì)Android系統(tǒng)中的回調(diào)接口的確權(quán)機(jī)制做簡(jiǎn)要介紹,對(duì)基于回調(diào)接口的確權(quán)機(jī)制做深入討論,最后結(jié)合實(shí)際情況,給出Android應(yīng)用的開(kāi)發(fā)流程圖。

Android;回調(diào);接口;確權(quán)

0 引言

不管是桌面應(yīng)用還是手機(jī)應(yīng)用程序,面對(duì)最多的就是用戶,經(jīng)常需要處理的就是用戶動(dòng)作,也就是需要為用戶的動(dòng)作提供響應(yīng)。這種為用戶動(dòng)作提供響應(yīng)的機(jī)制就是確權(quán)機(jī)制。隨著移動(dòng)互聯(lián)網(wǎng)的飛速發(fā)展,手機(jī)應(yīng)用越來(lái)越豐富,在應(yīng)用安裝運(yùn)行的同時(shí),它們就擁有了一些搜集手機(jī)數(shù)據(jù)的權(quán)限,在豐富我們生活的同時(shí),個(gè)人的隱私也隨之有可能遭到泄露。在不知不覺(jué)中,大量的應(yīng)用都在截取著我們?cè)诨ヂ?lián)網(wǎng)上的消費(fèi)信息和消費(fèi)習(xí)慣。那么如何避免個(gè)人的過(guò)多信息遭到泄露呢?從Android 4.4開(kāi)始引入了權(quán)限管理機(jī)制。

所謂權(quán)限管理,就是能夠手動(dòng)配置某個(gè)App的權(quán)限,進(jìn)而阻止惡意軟件以及防止隱私泄漏。當(dāng)然,更進(jìn)一步的權(quán)限管理,是能夠在App動(dòng)態(tài)使用某個(gè)權(quán)限的時(shí)候,提供一直通知機(jī)制提示用戶允許和拒絕。這樣的權(quán)限管理就更加類似于Windows中的主動(dòng)防御。

目前Android默認(rèn)的權(quán)限管理方法是:檢測(cè)應(yīng)用操作權(quán)限請(qǐng)求,構(gòu)造一個(gè)AlertDialog對(duì)象供用戶選擇。用戶有三種選擇:允許、拒絕和忽略。Android系統(tǒng)設(shè)備根據(jù)用戶的選擇來(lái)決定應(yīng)用此次操作的權(quán)限:要么允許此次操作,要么阻止此次操作,要么忽略。這種彈框機(jī)制不但與OS 5.0系統(tǒng)風(fēng)格不符,而且會(huì)造成多個(gè)AlertDialog堆積在一起,用戶要一個(gè)個(gè)自上而下地確權(quán),不能一目了然地看到系統(tǒng)當(dāng)前所有的權(quán)限申請(qǐng)。

在實(shí)際實(shí)訓(xùn)項(xiàng)目實(shí)現(xiàn)上采用了基于回調(diào)接口的新的確權(quán)機(jī)制,用自定義的view代替了系統(tǒng)采用的AlertDialog,新機(jī)制能大大改善用戶體驗(yàn),符合OS 5.0風(fēng)格。

1 回調(diào)接口

回調(diào)就是當(dāng)主程序需要的時(shí)候(或者到預(yù)定義狀態(tài)值)調(diào)用的接口實(shí)現(xiàn)類。接口實(shí)際上是不能被直接調(diào)用的,我們能調(diào)用的一定不是接口或者抽象類。

回調(diào)接口的很多應(yīng)用場(chǎng)景是出現(xiàn)在以接口類型為參數(shù)的情況下,以匿名內(nèi)部類的方式傳入而達(dá)到。

例如,假設(shè)有一個(gè)Java的API方法叫作(其中的ClickEvent就是一個(gè)接口)public void addEventListener(ClickEvent evt),那么,你在調(diào)用的時(shí)候就可以這樣:

addEventListener(new ClickEvent(){

//在這里實(shí)現(xiàn)接口中的方法

});

當(dāng)發(fā)生某事件時(shí),API的addEventListener方法就會(huì)被組件調(diào)用,從而所完成的匿名內(nèi)部類代碼就會(huì)被組件執(zhí)行。

例如,客戶程序C調(diào)用服務(wù)程序S中的某個(gè)函數(shù)A,然后S又在某個(gè)時(shí)候反過(guò)來(lái)調(diào)用C中的某個(gè)函數(shù)B,對(duì)于C來(lái)說(shuō),這個(gè)B便叫做回調(diào)函數(shù)。像Win32下的窗口過(guò)程函數(shù)就是一個(gè)典型的回調(diào)函數(shù)。一般說(shuō)來(lái),C不會(huì)自己調(diào)用B,C提供B的目的就是讓S來(lái)調(diào)用它,而且是C不得不提供。由于S并不知道C提供的B姓甚名誰(shuí),所以S會(huì)約定B的接口規(guī)范(函數(shù)原型),然后由C提前通過(guò)S的一個(gè)函數(shù)R告訴S自己將要使用B函數(shù),這個(gè)過(guò)程稱為回調(diào)函數(shù)的注冊(cè),R稱為注冊(cè)函數(shù)。Web Service以及Java的RMI都用到回調(diào)機(jī)制,可以訪問(wèn)遠(yuǎn)程服務(wù)器程序。

2 基于回調(diào)接口的確權(quán)機(jī)制

當(dāng)應(yīng)用有權(quán)限請(qǐng)求時(shí),權(quán)限管理服務(wù)會(huì)通過(guò)Binder調(diào)用到SystemUI中注冊(cè)的回調(diào)接口,回調(diào)接口構(gòu)造一個(gè)自定義的view對(duì)象并呈現(xiàn)給用戶,用戶確權(quán)后通過(guò)Binder將確權(quán)結(jié)果傳給權(quán)限管理服務(wù)。權(quán)限管理服務(wù)進(jìn)而將結(jié)果返回給申請(qǐng)權(quán)限的客戶端,客戶端根據(jù)確權(quán)結(jié)果繼續(xù)以下的流程。

所有的權(quán)限請(qǐng)求以自定義的View顯示,自定義View以List的形式通過(guò)狀態(tài)欄彈出,能讓用戶一覽無(wú)余,隨意選擇對(duì)哪個(gè)請(qǐng)求操作作出回應(yīng)。而并非像在原生狀態(tài)下機(jī)械地按順序操作。

JAVA方法回調(diào)是功能定義和功能實(shí)現(xiàn)分享的一種手段,是一種耦合設(shè)計(jì)思想。作為一種架構(gòu),必須有自己的運(yùn)行環(huán)境,并且提供用戶的實(shí)現(xiàn)接口。

(1)定義接口 Callback,包含回調(diào)方法callback()

(2)在一個(gè)類Caller中聲明一個(gè)Callback接口對(duì)象mCallback

(3)在程序中賦予 Caller對(duì)象的接口成員(mCallback) 一個(gè)內(nèi)部類對(duì)象如

new Callback(){

callback(){

//函數(shù)的具體實(shí)現(xiàn)

}

}

這樣,在需要的時(shí)候,可用Caller對(duì)象的mCallback接口成員調(diào)用callback()方法,完成回調(diào)。

例如,Android設(shè)備構(gòu)造狀態(tài)欄PhoneStatusBar時(shí),實(shí)例化一個(gè)自定義的View對(duì)象PermissionsCheckPanelView,該對(duì)象代表著權(quán)限申請(qǐng)?zhí)崾究?。同時(shí)該View對(duì)象又是CheckPermissionCallback類的一個(gè)成員變量。

通過(guò)IOnCallbackAddRequest接口類將CheckPermissionCallback和AppOpsService連接起來(lái),當(dāng)有權(quán)限請(qǐng)求操作時(shí),AppOpsService的askOperationLocked方法被調(diào)用,在askOperationLocked方法中調(diào)用IOnCallbackAddRequest接口中的onAddRequest方法。進(jìn)而會(huì)調(diào)用到CheckPermissionCallback中的該方法,CheckPermissionCallback對(duì)該方法做了實(shí)現(xiàn)。實(shí)現(xiàn)的本質(zhì)就是發(fā)送消息MSG_CTRLALL_PERMISSION_CHECK_PANEL,在該消息的處理中構(gòu)造一個(gè)PermissionsCheckPanelView對(duì)象并顯示出來(lái)。該對(duì)象代表著權(quán)限申請(qǐng)?zhí)崾究颉ermissionsCheckPanelView對(duì)象已實(shí)現(xiàn)OnTouchListener和OnItemClickListener接口,可以響應(yīng)用戶的選擇操作。當(dāng)用戶作出選擇或者等待15秒后,SystemUI會(huì)通過(guò)Binder調(diào)用AppOpsService的pushRequestChoice方法。在該方法中將用戶的選擇結(jié)果做處理,如用戶選擇記住時(shí),需要將確權(quán)結(jié)果寫(xiě)進(jìn)appops.xml文件。最后將確權(quán)結(jié)果通過(guò)Binder傳回給申請(qǐng)權(quán)限的客戶端,客戶端根據(jù)結(jié)果繼續(xù)下面的流程。以下是確權(quán)流程詳細(xì)圖示。

3 結(jié)語(yǔ)

Android應(yīng)用需要運(yùn)行在手機(jī)上,手機(jī)與傳統(tǒng)的計(jì)算機(jī)相比存儲(chǔ)能力、計(jì)算能力有限,因此Android應(yīng)用更適合作為客戶端軟件來(lái)使用。作為客戶端應(yīng)用程序,手機(jī)更能充分發(fā)揮它的攜帶方便的優(yōu)勢(shì),可以隨時(shí)隨地開(kāi)機(jī)運(yùn)行程序,而且可以隨時(shí)訪問(wèn)網(wǎng)絡(luò),通過(guò)網(wǎng)絡(luò)與服務(wù)器交互。

[1]董曉剛.Android中基于回調(diào)機(jī)制的事件處理[J].中國(guó)電子商務(wù),2013,(13).

[2]李楊.基于Android的多媒體應(yīng)用開(kāi)發(fā)與研究[J].計(jì)算機(jī)與現(xiàn)代化,2011,(4).

[3]韓超.基于Android經(jīng)典應(yīng)用開(kāi)發(fā)[M].北京:人力資源出版社,2011.

[4]劉平.Android手機(jī)訪問(wèn)服務(wù)器的一種數(shù)據(jù)交互方法[J].電子設(shè)計(jì)工程,2010,(9).

責(zé)任編輯:柴造坡

10.3969/j.issn.1674-6341.2016.04.015

2016-03-31

林莉蕓(1978—),女,河南駐馬店人,碩士,講師。研究方向:網(wǎng)絡(luò)與多媒體技術(shù)、軟件技術(shù)。

TP316

A

1674-6341(2016)04-0033-02

猜你喜歡
調(diào)用客戶端對(duì)象
神秘來(lái)電
睿士(2023年2期)2023-03-02 02:01:09
核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
縣級(jí)臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
孵化垂直頻道:新聞客戶端新策略
基于Vanconnect的智能家居瘦客戶端的設(shè)計(jì)與實(shí)現(xiàn)
攻略對(duì)象的心思好難猜
意林(2018年3期)2018-03-02 15:17:24
基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
基于熵的快速掃描法的FNEA初始對(duì)象的生成方法
區(qū)間對(duì)象族的可鎮(zhèn)定性分析
吴江市| 新乡县| 绥江县| 江都市| 光泽县| 九江市| 肇东市| 历史| 汕尾市| 西峡县| 晋中市| 荔浦县| 靖宇县| 井陉县| 新安县| 元阳县| 三河市| 安阳市| 监利县| 明星| 启东市| 茌平县| 安龙县| 西充县| 银川市| 张北县| 盐城市| 阿鲁科尔沁旗| 雷州市| 莆田市| 东城区| 雅江县| 兖州市| 西丰县| 玛沁县| 新密市| 抚松县| 泸溪县| 靖西县| 刚察县| 彭水|