044android初級篇之a(chǎn)ndroid app中的權(quán)限及自定義權(quán)限

自定義權(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)證方式。

  1. normal: 低風(fēng)險權(quán)限,只要申請了就可以使用(在AndroidManifest.xml中添加<uses-permission>標(biāo)簽),安裝時不需要用戶確認(rèn);
  2. dangerous:高風(fēng)險權(quán)限,安裝時需要用戶的確認(rèn)才可使用;
  3. signature:只有當(dāng)申請權(quán)限的應(yīng)用程序的數(shù)字簽名與聲明此權(quán)限的應(yīng)用程序的數(shù)字簽名相同時(如果是申請系統(tǒng)權(quán)限,則需要與系統(tǒng)簽名相同),才能將權(quán)限授給它;
  4. 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也可以在該目錄下拿到。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容