Android 自定義權限 (<permission> <uses-permission>)

在android系統(tǒng)的安全模型中,應用程序在默認的情況下不可以執(zhí)行任何對其他應用程序,系統(tǒng)或者用戶帶來負面影響的操作。如果應用需要執(zhí)行某些操作,就需要聲明使用這個操作對應的權限。 (在manifest文件中 添加標記)

android 系統(tǒng)提供了一系列這樣的權限,具體可以查看android 權限,另外,android系統(tǒng)在新的版本中會增加一些permission,可以查看android 版本信息

當然,app也可以自定義屬于自己的permission 或?qū)儆陂_發(fā)者使用的同一個簽名的permission。定義一個permission 就是在menifest文件中添加一個permission標簽。

Xml代碼

android:icon="drawable?resource"

android:label="string?resource"

android:name="string"

android:permissionGroup="string"

android:protectionLevel=["normal"?|?"dangerous"?|

"signature"?|?"signatureOrSystem"]/>

android:description :對權限的描述,一般是兩句話,第一句話描述這個權限所針對的操作,第二句話告訴用戶授予app這個權限會帶來的后果

android:label: 對權限的一個簡短描述

android:name :權限的唯一標識,一般都是使用 報名加權限名

android:permissionGroup: 權限所屬權限組的名稱

android:protectionLevel: 權限的等級,

normal 是最低的等級,聲明次權限的app,系統(tǒng)會默認授予次權限,不會提示用戶

dangerous? 權限對應的操作有安全風險,系統(tǒng)在安裝聲明此類權限的app時會提示用戶

signature? 權限表明的操作只針對使用同一個證書簽名的app開放

signatureOrSystem? 與signature類似,只是增加了rom中自帶的app的聲明

android:name 屬性是必須的,其他的可選,未寫的系統(tǒng)會指定默認值

下面通過指定一個BroadcastReceiver的權限來實驗

首先創(chuàng)建了兩個app,app A ,app B ;

app A中注冊了一個BroadcastReceiver ,app B 發(fā)送消息

app A的menifest文件:

Xml代碼

package="com.example.testbutton"

android:versionCode="1"

android:versionName="1.0">

android:minSdkVersion="7"

android:targetSdkVersion="15"/>

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme">

android:name=".MainActivity"

launcheMode="singleTask"

android:configChanges="locale|orientation|keyboardHidden"

android:screenOrientation="portrait"

android:theme="@style/android:style/Theme.NoTitleBar.Fullscreen">

android:name="com.example.testbutton.TestButtonReceiver"

android:permission="com.example.testbutton.RECEIVE">

app B 的menifest 文件內(nèi)容

Xml代碼

package="com.example.testsender"

android:versionCode="1"

android:versionName="1.0">

android:minSdkVersion="7"

android:targetSdkVersion="15"/>

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme">

android:name=".MainActivity"

android:label="@string/title_activity_main">

這樣app B 給app A 發(fā)送消息,A就可以收到了,若未在app B的menifest文件中聲明使用相應的權限,app B發(fā)送的消息,A是收不到的。

另外,也可在app B 的menifest文件中聲明權限時,添加android:protectionLevel=“signature”,指定app B只能接收到使用同一證書簽名的app 發(fā)送的消息。



http://berdy.iteye.com/blog/1782854

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

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

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