自定義權(quán)限的聲明
如果自定義的軟件中因?qū)ν馓峁┦裁捶?wù),而想聲明一個(gè)權(quán)限,來限制此服務(wù)的使用,可以在Manifest中底桂,聲明權(quán)限。
以launcher2程序的訪問provider的權(quán)限為例子:
在application 中注冊(cè)provider
<provider android:authorities="com.android.launcher2.settings"
android:exported="true"
android:name="com.android.launcher2.LauncherProvider"
android:readPermission="com.android.launcher.permission.READ_SETTINGS"
android:writePermission="com.android.launcher.permission.WRITE_SETTINGS"/>
對(duì)外聲明權(quán)限伪很,包括權(quán)限名戚啥,權(quán)限所在組,權(quán)限級(jí)別
<permission
android:description="@string/permdesc_read_settings"
android:label="@string/permlab_read_settings"
android:name="com.android.launcher.permission.READ_SETTINGS"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="normal"/>
<permission
android:description="@string/permdesc_write_settings"
android:label="@string/permlab_write_settings"
android:name="com.android.launcher.permission.WRITE_SETTINGS"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="signatureOrSystem"/>
Android權(quán)限級(jí)別(protectionLevel)
通常情況下锉试,對(duì)于需要付費(fèi)的操作以及可能涉及到用戶隱私的操作猫十,我們都會(huì)格外敏感。
出于安全考慮呆盖,Android中對(duì)一些訪問進(jìn)行了限制拖云,如網(wǎng)絡(luò)訪問(需付費(fèi))以及獲取聯(lián)系人(涉及隱私)等。應(yīng)用程序如果想要進(jìn)行此類訪問应又,則需要申請(qǐng)相應(yīng)權(quán)限宙项。Android對(duì)這些權(quán)限進(jìn)行了四類分級(jí),不同級(jí)別的權(quán)限對(duì)應(yīng)不同的認(rèn)證方式株扛。
- normal: 低風(fēng)險(xiǎn)權(quán)限尤筐,只要申請(qǐng)了就可以使用(在AndroidManifest.xml中添加<uses-permission>標(biāo)簽)汇荐,安裝時(shí)不需要用戶確認(rèn);
- dangerous:高風(fēng)險(xiǎn)權(quán)限盆繁,安裝時(shí)需要用戶的確認(rèn)才可使用掀淘;
- signature:只有當(dāng)申請(qǐng)權(quán)限的應(yīng)用程序的數(shù)字簽名與聲明此權(quán)限的應(yīng)用程序的數(shù)字簽名相同時(shí)(如果是申請(qǐng)系統(tǒng)權(quán)限,則需要與系統(tǒng)簽名相同)油昂,才能將權(quán)限授給它革娄;
- signatureOrSystem:簽名相同,或者申請(qǐng)權(quán)限的應(yīng)用為系統(tǒng)應(yīng)用(在system image中)冕碟。
上述四類權(quán)限級(jí)別同樣可用于自定義權(quán)限中拦惋。如果開發(fā)者需要對(duì)自己的應(yīng)用程序(或部分應(yīng)用)進(jìn)行訪問控制,則可以通過在AndroidManifest.xml中添加<permission>標(biāo)簽安寺,將其屬性中的protectionLevel設(shè)置為上述四類級(jí)別中的某一種來實(shí)現(xiàn)厕妖。
android模擬器中需要的官方系統(tǒng)的系統(tǒng)簽名key
如果使用了模擬器,有時(shí)候 一定希望可以拿到系統(tǒng)權(quán)限挑庶,有一種拿到系統(tǒng)權(quán)限的方式是使用該系統(tǒng)的系統(tǒng)簽名key進(jìn)行簽名叹放。
android 官方sdk中的模擬器鏡像可以在android源碼中拿到,位于:
android-5.0.0_r5\src\build\target\product\security\platform.x509.pem
android-5.0.0_r5\src\build\target\product\security\platform.pk8
同時(shí)其他幾個(gè)key也可以在該目錄下拿到挠羔。