摘要:使用場景自定義權(quán)限一般用于暴露出去的組件,提高安全性。擁有相同自定義權(quán)限的軟件必須使用同樣的簽名,否則后一個程序無法安裝。
最近在研究關(guān)于android自定義權(quán)限的問題,關(guān)于自定義權(quán)限一般是保證APP的安全性,那么什么事自定義權(quán)限?今天我們來補充一下自己的知識
作者:BrightVan1、如何聲明自定義權(quán)限
地址:https://www.jianshu.com/p/b60...
在Manifest文件中使用Permission標(biāo)簽定義自己的權(quán)限:
???? ????...
解釋下各個屬性:
name,該標(biāo)簽就是權(quán)限的名字。
description,該標(biāo)簽就是權(quán)限的介紹。
permissionGroup,指定該權(quán)限的組。
protectionLevel,指定保護級別。
Android將權(quán)限分為若干個保護級別,normal, dangerous, signature等。normal就是正常權(quán)限,該權(quán)限并不會給用戶或者設(shè)備的隱私帶來風(fēng)險;dangerous就是危險權(quán)限,該級別的權(quán)限通常會給用戶的數(shù)據(jù)或設(shè)備的隱私帶來風(fēng)險;signature指的是,只有相同簽名的應(yīng)用才能使用該權(quán)限。更多的介紹可以參考protectionLevel。
2、使用場景自定義權(quán)限一般用于暴露出去的組件,提高安全性。Android允許一個應(yīng)用(客戶端)調(diào)用另一個應(yīng)用(服務(wù)端)的組件。那么作為服務(wù)端的應(yīng)用就得暴露相應(yīng)的組件,客戶端應(yīng)用才能訪問。當(dāng)然,在暴露的時候,權(quán)限是非必須的,如果暴露的組件沒有權(quán)限的話,那么任何的其他應(yīng)用都可以來調(diào)用該組件;如果該組件申請了權(quán)限,那么只有擁有該權(quán)限的應(yīng)用才能調(diào)用該組件。
exported屬性就是代表是否暴露。該例子并沒有要求調(diào)用者需要申請權(quán)限,也就是說,任何的應(yīng)用就可以調(diào)用才組件。如果每個應(yīng)用都可以調(diào)用我們的組件的話,顯然是不安全的,我們希望只有使用了我們的權(quán)限的應(yīng)用,才能調(diào)用我們暴露的組件,我們可以在activity中加入permission屬性。
Intent?intent?=?new?Intent();intent.setClassName("com.bright.permission",?"com.bright.permission.TestA_Activity");startActivity(intent);
除了上面的方式,還可以通過intent-filter隱式啟動:
???? ???????????? ???????????? ????
Intent?intent?=?new?Intent();intent.setAction("com.bright.permission.action.TEST");startActivity(intent);3、自定義權(quán)限注意點 3.1、兩個應(yīng)用聲明了相同的權(quán)限
Android不允許兩個不同的應(yīng)用定義一個相同名字的權(quán)限(除非這兩個應(yīng)用擁有相同的簽名),所以在命名的時候,需要特別注意。
擁有相同自定義權(quán)限的軟件必須使用同樣的簽名,否則后一個程序無法安裝。
3.2、和應(yīng)用安裝順序的關(guān)系。場景:App A中聲明了權(quán)限PermissionA,App B中使用了權(quán)限PermissionA。
情況一:PermissionA的保護級別是normal或者dangerous
App B先安裝,App A后安裝,此時App B無法獲取PermissionA的權(quán)限,從App B打開App A會報權(quán)限錯誤。
App A先安裝,App B后安裝,從App B打開App A一切正常。
情況二:PermissionA的保護級別是signature或者signatureOrSystem
App B先安裝,App A后安裝,如果App A和App B是相同的簽名,那么App B可以獲取到PermissionA的權(quán)限。如果App A和App B的簽名不同,則App B獲取不到PermissionA權(quán)限。
即,對于相同簽名的app來說,不論安裝先后,只要是聲明了權(quán)限,請求該權(quán)限的app就會獲得該權(quán)限。
這也說明了對于具有相同簽名的系統(tǒng)app來說,安裝過程不會考慮權(quán)限依賴的情況。安裝系統(tǒng)app時,按照某個順序(例如名字排序,目錄位置排序等)安裝即可,等所有app安裝完了,所有使用權(quán)限的app都會獲得權(quán)限。
Android6.0引入了動態(tài)權(quán)限,這個大家都知道了。前面說到的自定義的權(quán)限的安全級別android:protectionLevel會影響權(quán)限在Android6.0+系統(tǒng)的使用
android:protectionLevel="normal",不需要動態(tài)申請
android:protectionLevel="dangerous",需要動態(tài)申請
閱讀我的更多文章近3年BAT面試真題整理合集
?Java并發(fā)面試,幸虧有點道行,不然又被忽悠了
NDK項目實戰(zhàn)—高仿360手機助手之卸載監(jiān)聽
分享幾個Android很強勢的的開源框架
歡迎關(guān)注我微信公眾號:終端研發(fā)部,一起交流和學(xué)習(xí)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/76867.html
摘要:中簡單搞定接口訪問,以及簡析掘金最近總結(jié)的一些經(jīng)驗,對于或中使用接口的一些心得。這里,本文將數(shù)據(jù)結(jié)構(gòu)之學(xué)習(xí)總結(jié)掘金前言前面介紹了的數(shù)據(jù)結(jié)構(gòu),今天抽空學(xué)習(xí)總結(jié)一下另一種數(shù)據(jù)結(jié)構(gòu)。淺析事件傳遞掘金中的事件傳遞主要涉及三個方法和。 Android 系統(tǒng)中,那些能大幅提高工作效率的 API 匯總(持續(xù)更新中...) - 掘金前言 條條大路通羅馬。工作中,實現(xiàn)某個需求的方式往往不是唯一的,這些不...
閱讀 3926·2021-11-24 09:38
閱讀 3107·2021-11-17 09:33
閱讀 3879·2021-11-10 11:48
閱讀 1246·2021-10-14 09:48
閱讀 3138·2019-08-30 13:14
閱讀 2557·2019-08-29 18:37
閱讀 3402·2019-08-29 12:38
閱讀 1423·2019-08-29 12:30