自定義權(quán)限的聲明
如果自定義的軟件中因?qū)ν馓峁┦裁捶?wù),而想聲明一個權(quán)限,來限制此服務(wù)的使用,可以在Manifest中,聲明權(quán)限。
以launcher2程序的訪問provider的權(quán)限為例子:
在application 中注冊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"/>
對外聲明權(quán)限,包括權(quán)限名,權(quán)限所在組,權(quán)限級別
<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)限級別(protectionLevel)
通常情況下,對于需要付費的操作以及可能涉及到用戶隱私的操作,我們都會格外敏感。
出于安全考慮,Android中對一些訪問進(jìn)行了限制,如網(wǎng)絡(luò)訪問(需付費)以及獲取聯(lián)系人(涉及隱私)等。應(yīng)用程序如果想要進(jìn)行此類訪問,則需要申請相應(yīng)權(quán)限。Android對這些權(quán)限進(jìn)行了四類分級,不同級別的權(quán)限對應(yīng)不同的認(rèn)證方式。
- normal: 低風(fēng)險權(quán)限,只要申請了就可以使用(在AndroidManifest.xml中添加<uses-permission>標(biāo)簽),安裝時不需要用戶確認(rèn);
- dangerous:高風(fēng)險權(quán)限,安裝時需要用戶的確認(rèn)才可使用;
- signature:只有當(dāng)申請權(quán)限的應(yīng)用程序的數(shù)字簽名與聲明此權(quán)限的應(yīng)用程序的數(shù)字簽名相同時(如果是申請系統(tǒng)權(quán)限,則需要與系統(tǒng)簽名相同),才能將權(quán)限授給它;
- signatureOrSystem:簽名相同,或者申請權(quán)限的應(yīng)用為系統(tǒng)應(yīng)用(在system image中)。
上述四類權(quán)限級別同樣可用于自定義權(quán)限中。如果開發(fā)者需要對自己的應(yīng)用程序(或部分應(yīng)用)進(jìn)行訪問控制,則可以通過在AndroidManifest.xml中添加<permission>標(biāo)簽,將其屬性中的protectionLevel設(shè)置為上述四類級別中的某一種來實現(xiàn)。
android模擬器中需要的官方系統(tǒng)的系統(tǒng)簽名key
如果使用了模擬器,有時候 一定希望可以拿到系統(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
同時其他幾個key也可以在該目錄下拿到。