本發(fā)明屬于計(jì)算機(jī)軟件技術(shù)領(lǐng)域,涉及安卓操作系統(tǒng),具體涉及基于回調(diào)機(jī)制的安卓組權(quán)限管理方法及系統(tǒng)。
背景技術(shù):
隨著移動(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ò)多信息遭到泄露呢?安卓系統(tǒng)從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ī)制提示用戶允許和拒絕。
現(xiàn)有的權(quán)限提示采用AlertDialog機(jī)制,這種機(jī)制過(guò)于呆板,不夠靈活,它會(huì)打斷當(dāng)前正在運(yùn)行Activity,用戶必須實(shí)時(shí)作出選擇,所以在Activity重新恢復(fù)的時(shí)候,需要重新加載最新授權(quán)狀態(tài)值。如果不實(shí)時(shí)做選擇默認(rèn)為忽略,此時(shí)要等待好幾秒鐘該對(duì)話框才能消失,應(yīng)用運(yùn)行不夠流暢。如果某一個(gè)應(yīng)用的申請(qǐng)權(quán)限過(guò)多,用戶要對(duì)這所有申請(qǐng)的權(quán)限做選擇,導(dǎo)致用戶過(guò)長(zhǎng)時(shí)間的做選擇操作,容易引起用戶煩躁心理。
所謂組權(quán)限管理,就是將安卓系統(tǒng)的所有權(quán)限進(jìn)行分組管理,這樣既能讓系統(tǒng)的眾多權(quán)限分門別類,條理清晰,又能提高對(duì)這些權(quán)限的管理效率,一定程度上能節(jié)約系統(tǒng)資源,降低設(shè)備功耗。
安卓原生系統(tǒng)雖然提出了組權(quán)限的概念,大致對(duì)系統(tǒng)的所有權(quán)限做了分類,并沒(méi)有提供有效的組權(quán)限管理機(jī)制。市面上基于安卓開(kāi)發(fā)的系統(tǒng),如阿里云OS、蘑菇系統(tǒng)等,亦只提供單個(gè)權(quán)限管理功能,都沒(méi)有提供組權(quán)限管理方法。
公開(kāi)號(hào)CN105184148A的中國(guó)發(fā)明專利申請(qǐng),提到通過(guò)自定義View機(jī)制來(lái)管理安卓應(yīng)用權(quán)限。但是該自定義View繼承自AlertDialog,雖然在一定程序上保證了應(yīng)用程序運(yùn)行的流暢性,但是沒(méi)有解決大量確權(quán)提示框同時(shí)彈出,給用戶帶來(lái)不便的問(wèn)題。
公開(kāi)號(hào)為CN103679007A的中國(guó)發(fā)明專利申請(qǐng)公開(kāi)了一種管理應(yīng)用程序權(quán)限的方法,包括:監(jiān)控終端是否有安卓應(yīng)用程序請(qǐng)求監(jiān)控服務(wù);當(dāng)接收到安卓應(yīng)用程序的請(qǐng)求監(jiān)控服務(wù)時(shí),顯示提示選擇信息,供用戶選擇是否允許監(jiān)控;當(dāng)接收到用戶選擇的允許監(jiān)控觸發(fā)時(shí),則開(kāi)始啟動(dòng)實(shí)時(shí)監(jiān)聽(tīng)安卓應(yīng)用程序的請(qǐng)求信息,并設(shè)置相應(yīng)的監(jiān)管策略控制信息。該發(fā)明提出的方法同樣未解決大量確權(quán)提示框同時(shí)彈出,給用戶帶來(lái)不便的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是:針對(duì)安卓系統(tǒng)現(xiàn)有應(yīng)用權(quán)限管理方法存在的上述不足,提供一種基于回調(diào)機(jī)制的組權(quán)限管理機(jī)制,該管理機(jī)制對(duì)所有權(quán)限進(jìn)行分組,并將同時(shí)出現(xiàn)的屬于同組的多個(gè)權(quán)限歸集在一個(gè)提示中,供用戶處理。以給用戶帶來(lái)方便。本發(fā)明同時(shí)延續(xù)了自定義View機(jī)制,能同時(shí)彈出多個(gè)權(quán)限組的權(quán)限請(qǐng)求,以提高系統(tǒng)的靈活性。
為實(shí)現(xiàn)上述目的,本發(fā)明首先提供了一種基于回調(diào)機(jī)制的安卓組權(quán)限管理方法,包括:
步驟S1:應(yīng)用程序申請(qǐng)某項(xiàng)權(quán)限授權(quán);
步驟S2:向用戶發(fā)出授權(quán)申請(qǐng)?zhí)崾荆?/p>
步驟S3:用戶選擇授權(quán)或拒絕;
其特征在于,安卓所有的權(quán)限被劃分為多個(gè)組,所述步驟S2包括:
步驟S2-1:判斷當(dāng)前是否有未被處理的授權(quán)申請(qǐng)?zhí)崾荆以撌跈?quán)申請(qǐng)?zhí)崾局邪信c步驟S1中所申請(qǐng)的權(quán)限項(xiàng)屬于同一組的其它權(quán)限,若判斷結(jié)果為是,則進(jìn)入步驟S2-2,若判斷結(jié)果為否,則執(zhí)行步驟S2-3;
步驟S2-2:則將步驟S1中所申請(qǐng)的權(quán)限項(xiàng)作為新增條目加入步驟S2-1中所述的授權(quán)申請(qǐng)?zhí)崾局小?/p>
步驟S2-3:發(fā)出包含步驟S1中所申請(qǐng)的權(quán)限項(xiàng)的授權(quán)申請(qǐng)?zhí)崾尽?/p>
進(jìn)一步地,本發(fā)明所述基于回調(diào)機(jī)制的安卓組權(quán)限管理方法,還包括:
步驟S0:同時(shí)在SystemUI和AppOpsService里注冊(cè)回調(diào)接口IOnCallback,安卓設(shè)備構(gòu)造狀態(tài)欄SystemUI時(shí),實(shí)例化一個(gè)自定義的View對(duì)象GroupPermissionsCheckPanelView,該對(duì)象代表著組權(quán)限提示框。通過(guò)IOnCallback接口將權(quán)限管理服務(wù)AppOpsService和系統(tǒng)狀態(tài)欄連接起來(lái),兩者之間通過(guò)Binder通信。
所述步驟S2還包括步驟S2-0:AppOpsService對(duì)申請(qǐng)者進(jìn)行合法性檢查。
所述步驟S2-3包括:
步驟S2-3-1:AppOpsService服務(wù)調(diào)用askOperationLocked方法,
步驟S2-3-2:在askOperationLocked方法中調(diào)用IOnCallback接口中的onAddRequest方法,
步驟S2-3-3:通過(guò)binder通信調(diào)用GroupPermissionCallback中的onAddRequest方法,
步驟S2-3-4:發(fā)送消息MSG_GROUP_PERMISSION_CHECK_PANEL,在該消息的處理中構(gòu)造一個(gè)GroupPermissionsCheckPanelView對(duì)象并顯示出來(lái)。
進(jìn)一步地,GroupPermissionsCheckPanelView對(duì)象中實(shí)現(xiàn)OnItemClickListener和OnTouchListener接口,以響應(yīng)用戶的選擇操作。
進(jìn)一步地,安卓所有的權(quán)限劃歸為十個(gè)組,分別是:PRIVATE_INFO組,LOCATION_INFO組,SYSTEM_INFO組,COST組,ACCOUNT_MGR組,HARDWARE_MGR組,WIRELESS_MGR組,PHONE_MGR組,STORAGE_MGE組和NETWORK組。
其中PRIVATE_INFO組代表操作用戶私人數(shù)據(jù)的權(quán)限組,包括短信、聯(lián)系人、日歷、電子郵件等。LOCATION_INFO組代表位置操作的權(quán)限組,包括GPS定位,WLAN定位和數(shù)據(jù)網(wǎng)絡(luò)定位。SYSTEM_INFO組代表操作系統(tǒng)應(yīng)用程序接口。
基于以上組權(quán)限管理方法,本發(fā)明進(jìn)一步提出一種基于回調(diào)機(jī)制的安卓組權(quán)限管理系統(tǒng),包括:
應(yīng)用權(quán)限管理單元,用于響應(yīng)應(yīng)用程序的權(quán)限授權(quán)申請(qǐng),對(duì)申請(qǐng)者進(jìn)行合法性檢查,判斷當(dāng)前是否有未被處理的授權(quán)申請(qǐng)?zhí)崾荆约芭袛嘣撌跈?quán)申請(qǐng)?zhí)崾局惺欠癜信c應(yīng)用程序申請(qǐng)授權(quán)的權(quán)限項(xiàng)屬于同一組的其它權(quán)限項(xiàng),回調(diào)授權(quán)申請(qǐng)?zhí)崾締卧械膶?shí)現(xiàn)類;
授權(quán)申請(qǐng)?zhí)崾締卧?,用于發(fā)出包含應(yīng)用程序所申請(qǐng)授權(quán)的權(quán)限項(xiàng)的授權(quán)申請(qǐng)?zhí)崾尽?/p>
進(jìn)一步地,所述應(yīng)用權(quán)限管理單元包括權(quán)限庫(kù),權(quán)限庫(kù)中分組存儲(chǔ)所有安卓權(quán)限。
進(jìn)一步地,在權(quán)限庫(kù)中,安卓所有的權(quán)限劃歸為十個(gè)組,分別是:
PRIVATE_INFO組,LOCATION_INFO組,SYSTEM_INFO組,COST組,ACCOUNT_MGR組,HARDWARE_MGR組,WIRELESS_MGR組,PHONE_MGR組,STORAGE_MGE組和NETWORK組。
其中PRIVATE_INFO組代表操作用戶私人數(shù)據(jù)的權(quán)限組,包括短信、聯(lián)系人、日歷、電子郵件等。LOCATION_INFO組代表位置操作的權(quán)限組,包括GPS定位,WLAN定位和數(shù)據(jù)網(wǎng)絡(luò)定位。SYSTEM_INFO組代表操作系統(tǒng)應(yīng)用程序接口。
進(jìn)一步地,所述應(yīng)用權(quán)限管理單元包括AppOpsService服務(wù),AppOpsService里注冊(cè)有回調(diào)接口IOnCallback。
進(jìn)一步地,所述授權(quán)申請(qǐng)?zhí)崾締卧⊿ystemUI類,SystemUI類中注冊(cè)有回調(diào)接口IOnCallback。
進(jìn)一步地,AppOpsService和SystemUI通過(guò)IOnCallback接口連接,兩者之間通過(guò)Binder通信。
進(jìn)一步地,SystemUI構(gòu)造狀態(tài)欄時(shí),實(shí)例化一個(gè)自定義的View對(duì)象GroupPermissionsCheckPanelView,該對(duì)象代表著組權(quán)限提示框。
進(jìn)一步地,當(dāng)應(yīng)用程序申請(qǐng)權(quán)限授權(quán)時(shí),AppOpsService對(duì)申請(qǐng)者進(jìn)行合法性檢查。檢查通過(guò)后對(duì)本次申請(qǐng)權(quán)限歸類,最后會(huì)調(diào)用askOperationLocked方法,在askOperationLocked方法中調(diào)用IOnCallback接口中的onAddRequest方法。進(jìn)而通過(guò)binder通信調(diào)用GroupPermissionCallback中的onAddRequest方法,發(fā)送消息MSG_GROUP_PERMISSION_CHECK_PANEL,在該消息的處理中構(gòu)造一個(gè)GroupPermissionsCheckPanelView對(duì)象并顯示。
進(jìn)一步地,如果在一個(gè)組權(quán)限確權(quán)未完成時(shí)又有權(quán)限申請(qǐng),同樣對(duì)操作申請(qǐng)做合法性檢查,然后歸類,如果屬于已顯示的組就加入到該組,作為組權(quán)限提示框中的一個(gè)條目。如果不屬于已顯示的任何組,就實(shí)例化一個(gè)GroupPermissionsCheckPanelView對(duì)象并顯示。
進(jìn)一步地,GroupPermissionsCheckPanelView對(duì)象已實(shí)現(xiàn)OnItemClickListener和OnTouchListener接口,可以響應(yīng)用戶的選擇操作。
本發(fā)明有益效果:基于回調(diào)機(jī)制的該組權(quán)限管理機(jī)制對(duì)所有權(quán)限進(jìn)行分組,并將同時(shí)出現(xiàn)的屬于同組的多個(gè)權(quán)限歸集在一個(gè)提示中,供用戶處理,可以有效降低申請(qǐng)權(quán)限很多時(shí)提示框彈出的頻率,以給用戶帶來(lái)方便。本發(fā)明同時(shí)延續(xù)了自定義View機(jī)制,能同時(shí)彈出多個(gè)權(quán)限組的權(quán)限請(qǐng)求,以提高系統(tǒng)的靈活性。
附圖說(shuō)明
圖1是本發(fā)明所述的基于回調(diào)機(jī)制的安卓組權(quán)限管理方法流程示意圖。
圖2是本發(fā)明所述的基于回調(diào)機(jī)制的安卓組權(quán)限管理系統(tǒng)組織框圖。
具體實(shí)施方式
下面以示例的方式對(duì)本發(fā)明所述的基于回調(diào)機(jī)制的安卓組權(quán)限管理方法及系統(tǒng)做進(jìn)一步的說(shuō)明。
本發(fā)明基于回調(diào)機(jī)制實(shí)現(xiàn)安卓系統(tǒng)中的組權(quán)限管理,首先對(duì)安卓系統(tǒng)的所有權(quán)限進(jìn)行分類,抽象出某些操作的共性,以便于集中操作。如PRIVATE_INFO組代表操作用戶私人數(shù)據(jù),短信、聯(lián)系人、日歷、電子郵件等。LOCATION_INFO組代表位置操作,GPS定位,WLAN定位和數(shù)據(jù)網(wǎng)絡(luò)定位。SYSTEM_INFO組代表操作系統(tǒng)應(yīng)用程序接口等。
然后,同時(shí)在SystemUI和AppOpsService里注冊(cè)回調(diào)接口IOnCallback,當(dāng)有應(yīng)用申請(qǐng)權(quán)限操作時(shí),客戶端服務(wù)通過(guò)Binder調(diào)用將操作請(qǐng)求傳給權(quán)限管理服務(wù)(AppOpsService)。如百度地圖申請(qǐng)定位服務(wù)時(shí),定位請(qǐng)求會(huì)通過(guò)LocationManagerService服務(wù)傳給AppOpsService。權(quán)限管理服務(wù)對(duì)此次申請(qǐng)先做合法性檢查,如檢查申請(qǐng)者的身份,用戶ID等,檢查通過(guò)后再對(duì)此次操作歸類,如訪問(wèn)通訊錄的操作歸到PRIVATE_INFO組,定位操作歸到LOCATION_INFO組等。再調(diào)用接口IOnCallBack中的onAddRequest方法。同時(shí)會(huì)回調(diào)SystemUI中的該方法,在該方法中會(huì)實(shí)例化一個(gè)組權(quán)限提示對(duì)象,該對(duì)象呈現(xiàn)當(dāng)前系統(tǒng)中所有正在申請(qǐng)的組權(quán)限。等待用戶的選擇操作。
基于以上構(gòu)思下面給出幾個(gè)相對(duì)優(yōu)選的具體實(shí)施例。在以下實(shí)施例中,安卓所有的權(quán)限已經(jīng)被分組。
實(shí)施例1
本發(fā)明所述基于回調(diào)機(jī)制的安卓組權(quán)限管理方法,包括:
步驟S0:同時(shí)在SystemUI和AppOpsService里注冊(cè)回調(diào)接口IOnCallback,安卓設(shè)備構(gòu)造狀態(tài)欄SystemUI時(shí),實(shí)例化一個(gè)自定義的View對(duì)象GroupPermissionsCheckPanelView,該對(duì)象代表著組權(quán)限提示框。通過(guò)IOnCallback接口將權(quán)限管理服務(wù)AppOpsService和系統(tǒng)狀態(tài)欄連接起來(lái),兩者之間通過(guò)Binder通信。
步驟S1:應(yīng)用程序申請(qǐng)某項(xiàng)權(quán)限授權(quán)。
步驟S2-1:判斷當(dāng)前是否有未被處理的授權(quán)申請(qǐng)?zhí)崾?,且該授?quán)申請(qǐng)?zhí)崾局邪信c步驟S1中所申請(qǐng)的權(quán)限項(xiàng)屬于同一組的其它權(quán)限,若判斷結(jié)果為是,則進(jìn)入步驟S2-2,若判斷結(jié)果為否,則執(zhí)行步驟S2-3;
步驟S2-2:則將步驟S1中所申請(qǐng)的權(quán)限項(xiàng)作為新增條目加入步驟S2-1中所述的授權(quán)申請(qǐng)?zhí)崾局小?/p>
步驟S2-3:發(fā)出包含步驟S1中所申請(qǐng)的權(quán)限項(xiàng)的授權(quán)申請(qǐng)?zhí)崾尽?/p>
步驟S3:用戶選擇授權(quán)或拒絕。
實(shí)施例2
本發(fā)明所述基于回調(diào)機(jī)制的安卓組權(quán)限管理方法,包括:
步驟S0:同時(shí)在SystemUI和AppOpsService里注冊(cè)回調(diào)接口IOnCallback,安卓設(shè)備構(gòu)造狀態(tài)欄SystemUI時(shí),實(shí)例化一個(gè)自定義的View對(duì)象GroupPermissionsCheckPanelView,該對(duì)象代表著組權(quán)限提示框。通過(guò)IOnCallback接口將權(quán)限管理服務(wù)AppOpsService和系統(tǒng)狀態(tài)欄連接起來(lái),兩者之間通過(guò)Binder通信。
步驟S1:應(yīng)用程序申請(qǐng)某項(xiàng)權(quán)限授權(quán)。
步驟S2-0:AppOpsService對(duì)申請(qǐng)者進(jìn)行合法性檢查。
步驟S2-1:判斷當(dāng)前是否有未被處理的授權(quán)申請(qǐng)?zhí)崾?,且該授?quán)申請(qǐng)?zhí)崾局邪信c步驟S1中所申請(qǐng)的權(quán)限項(xiàng)屬于同一組的其它權(quán)限,若判斷結(jié)果為是,則進(jìn)入步驟S2-2,若判斷結(jié)果為否,則執(zhí)行步驟S2-3;
步驟S2-2:則將步驟S1中所申請(qǐng)的權(quán)限項(xiàng)作為新增條目加入步驟S2-1中所述的授權(quán)申請(qǐng)?zhí)崾局小?/p>
步驟S2-3-1:AppOpsService服務(wù)調(diào)用askOperationLocked方法,
步驟S2-3-2:在askOperationLocked方法中調(diào)用IOnCallback接口中的onAddRequest方法,
步驟S2-3-3:通過(guò)binder通信調(diào)用GroupPermissionCallback中的onAddRequest方法,
步驟S2-3-4:發(fā)送消息MSG_GROUP_PERMISSION_CHECK_PANEL,在該消息的處理中構(gòu)造一個(gè)GroupPermissionsCheckPanelView對(duì)象并顯示出來(lái)。GroupPermissionsCheckPanelView對(duì)象中實(shí)現(xiàn)OnItemClickListener和OnTouchListener接口,以響應(yīng)用戶的選擇操作。
步驟S3:用戶選擇授權(quán)或拒絕。
實(shí)施例3
本發(fā)明所述基于回調(diào)機(jī)制的安卓組權(quán)限管理系統(tǒng),包括:應(yīng)用權(quán)限管理單元和授權(quán)申請(qǐng)?zhí)崾締卧?。所述?yīng)用權(quán)限管理單元包括AppOpsService服務(wù),AppOpsService里注冊(cè)有回調(diào)接口IOnCallback。所述授權(quán)申請(qǐng)?zhí)崾締卧⊿ystemUI類,SystemUI類中注冊(cè)有回調(diào)接口IOnCallback。AppOpsService和SystemUI通過(guò)IOnCallback接口連接,兩者之間通過(guò)Binder通信。SystemUI構(gòu)造狀態(tài)欄時(shí),實(shí)例化一個(gè)自定義的View對(duì)象GroupPermissionsCheckPanelView,該對(duì)象代表著組權(quán)限提示框。
應(yīng)用權(quán)限管理單元用于響應(yīng)應(yīng)用程序的權(quán)限授權(quán)申請(qǐng),對(duì)申請(qǐng)者進(jìn)行合法性檢查,判斷當(dāng)前是否有未被處理的授權(quán)申請(qǐng)?zhí)崾?,以及判斷該授?quán)申請(qǐng)?zhí)崾局惺欠癜信c應(yīng)用程序申請(qǐng)授權(quán)的權(quán)限項(xiàng)屬于同一組的其它權(quán)限項(xiàng),回調(diào)授權(quán)申請(qǐng)?zhí)崾締卧械膶?shí)現(xiàn)類。授權(quán)申請(qǐng)?zhí)崾締卧糜诎l(fā)出包含應(yīng)用程序所申請(qǐng)授權(quán)的權(quán)限項(xiàng)的授權(quán)申請(qǐng)?zhí)崾尽?/p>
所述應(yīng)用權(quán)限管理單元包括權(quán)限庫(kù),權(quán)限庫(kù)中分組存儲(chǔ)所有安卓權(quán)限。在權(quán)限庫(kù)中,安卓所有的權(quán)限被分組存儲(chǔ),例如用PRIVATE_INFO組代表操作用戶私人數(shù)據(jù)的權(quán)限組,包括短信、聯(lián)系人、日歷和電子郵件等。LOCATION_INFO組代表位置操作的權(quán)限組,包括GPS定位,WLAN定位和數(shù)據(jù)網(wǎng)絡(luò)定位。SYSTEM_INFO組代表操作系統(tǒng)應(yīng)用程序接口。
當(dāng)應(yīng)用程序申請(qǐng)權(quán)限授權(quán)時(shí),AppOpsService對(duì)申請(qǐng)者進(jìn)行合法性檢查。檢查通過(guò)后對(duì)本次申請(qǐng)權(quán)限歸類,最后會(huì)調(diào)用askOperationLocked方法,在askOperationLocked方法中調(diào)用IOnCallback接口中的onAddRequest方法。進(jìn)而通過(guò)binder通信調(diào)用GroupPermissionCallback中的onAddRequest方法,發(fā)送消息MSG_GROUP_PERMISSION_CHECK_PANEL,在該消息的處理中構(gòu)造一個(gè)GroupPermissionsCheckPanelView對(duì)象并顯示。
如果在一個(gè)組權(quán)限確權(quán)未完成時(shí)又有權(quán)限申請(qǐng),同樣對(duì)操作申請(qǐng)做合法性檢查,然后歸類,如果屬于已顯示的組就加入到該組,作為組權(quán)限提示框中的一個(gè)條目。如果不屬于已顯示的任何組,就實(shí)例化一個(gè)GroupPermissionsCheckPanelView對(duì)象并顯示。GroupPermissionsCheckPanelView對(duì)象已實(shí)現(xiàn)OnItemClickListener和OnTouchListener接口,可以響應(yīng)用戶的選擇操作。
實(shí)施例4
參照?qǐng)D2,本例中將安卓所有的權(quán)限劃歸為十個(gè)組,分別是:PRIVATE_INFO組,LOCATION_INFO組,SYSTEM_INFO組,COST組,ACCOUNT_MGR組,HARDWARE_MGR組,WIRELESS_MGR組,PHONE_MGR組,STORAGE_MGE組和NETWORK組。
在SystemUI類中注冊(cè)回調(diào)接口IOnCallback,安卓設(shè)備構(gòu)造狀態(tài)欄SystemUI時(shí),實(shí)例化一個(gè)自定義的View對(duì)象GroupPermissionsCheckPanelView,該對(duì)象代表著組權(quán)限提示框。通過(guò)IOnCallback接口類將權(quán)限管理服務(wù)AppOpsService和系統(tǒng)狀態(tài)欄連接起來(lái),兩者之間通過(guò)Binder通信。當(dāng)應(yīng)用程序有權(quán)限請(qǐng)求操作時(shí),AppOpsService服務(wù)會(huì)對(duì)申請(qǐng)者做各種合法性檢查,檢查通過(guò)后會(huì)對(duì)本次申請(qǐng)操作歸類。最后會(huì)調(diào)用askOperationLocked方法,在askOperationLocked方法中調(diào)用IOnCallback接口中的onAddRequest方法。進(jìn)而通過(guò)binder通信調(diào)用GroupPermissionCallback中的onAddRequest方法。
GroupPermissionCallback對(duì)onAddRequest方法做了實(shí)現(xiàn),實(shí)現(xiàn)的本質(zhì)就是發(fā)送消息MSG_GROUP_PERMISSION_CHECK_PANEL,在該消息的處理中構(gòu)造一個(gè)GroupPermissionsCheckPanelView對(duì)象并顯示出來(lái)。該對(duì)象代表著該組權(quán)限申請(qǐng)?zhí)崾?。如果在一個(gè)組權(quán)限確權(quán)未完成時(shí)又有權(quán)限申請(qǐng),同樣對(duì)操作申請(qǐng)做合法性檢查,然后對(duì)本次申請(qǐng)操作歸類,如果屬于已顯示的組就加入到該組,作為組權(quán)限提示框中的一個(gè)條目。如果不屬于已顯示的任何組,就實(shí)例化一個(gè)新GroupPermissionsCheckPanelView對(duì)象并顯示。
GroupPermissionsCheckPanelView對(duì)象已實(shí)現(xiàn)OnItemClickListener和OnTouchListener接口,可以響應(yīng)用戶的選擇操作。
實(shí)施例5
圖2所示為實(shí)現(xiàn)本發(fā)明所述組權(quán)限管理方法的基于回調(diào)機(jī)制的安卓組權(quán)限管理系統(tǒng),包括應(yīng)用權(quán)限管理單元和授權(quán)申請(qǐng)?zhí)崾締卧?/p>
所述應(yīng)用權(quán)限管理單元包括AppOpsService服務(wù)和權(quán)限庫(kù),所述授權(quán)申請(qǐng)?zhí)崾締卧⊿ystemUI類。
所述權(quán)限庫(kù)中分組存儲(chǔ)所有安卓權(quán)限。在權(quán)限庫(kù)中,安卓所有的權(quán)限劃歸為十個(gè)組,分別是:PRIVATE_INFO組,LOCATION_INFO組,SYSTEM_INFO組,COST組,ACCOUNT_MGR組,HARDWARE_MGR組,WIRELESS_MGR組,PHONE_MGR組,STORAGE_MGE組和NETWORK組。
AppOpsService和SystemUI通過(guò)回調(diào)接口IOnCallback連接,兩者之間通過(guò)Binder通信。
SystemUI構(gòu)造狀態(tài)欄時(shí),實(shí)例化一個(gè)自定義的View對(duì)象GroupPermissionsCheckPanelView,該對(duì)象代表著組權(quán)限提示框。當(dāng)應(yīng)用程序申請(qǐng)權(quán)限授權(quán)時(shí),AppOpsService對(duì)申請(qǐng)者進(jìn)行合法性檢查。檢查通過(guò)后對(duì)本次申請(qǐng)權(quán)限歸類,最后調(diào)用askOperationLocked方法,在askOperationLocked方法中調(diào)用IOnCallback接口中的onAddRequest方法。進(jìn)而通過(guò)binder通信調(diào)用GroupPermissionCallback中的onAddRequest方法,該onAddRequest方法會(huì)發(fā)送消息MSG_GROUP_PERMISSION_CHECK_PANEL,在該消息的處理中構(gòu)造一個(gè)GroupPermissionsCheckPanelView對(duì)象并顯示。如果在一個(gè)組權(quán)限確權(quán)未完成時(shí)又有權(quán)限申請(qǐng),同樣對(duì)操作申請(qǐng)做合法性檢查,然后歸類,如果屬于已顯示的組就加入到該組,作為組權(quán)限提示框中的一個(gè)條目。如果不屬于已顯示的任何組,就實(shí)例化一個(gè)GroupPermissionsCheckPanelView對(duì)象并顯示。
以上內(nèi)容是對(duì)本發(fā)明技術(shù)方案的解釋說(shuō)明,并非針對(duì)本發(fā)明保護(hù)范圍而做出的限定,不難想到的是,任何基于本發(fā)明提出的發(fā)明構(gòu)思,結(jié)合本領(lǐng)域常規(guī)知識(shí)不經(jīng)創(chuàng)造性勞而做出的具體實(shí)施方式,均屬于對(duì)本發(fā)明的一種實(shí)施,應(yīng)當(dāng)落入本發(fā)明保護(hù)范圍之內(nèi)。