在android系統(tǒng)的安全模型中,應(yīng)用程序在默認(rèn)的情況下不可以執(zhí)行任何對其他應(yīng)用程序膏孟,系統(tǒng)或者用戶帶來負(fù)面影響的操作。如果應(yīng)用需要執(zhí)行某些操作拌汇,就需要聲明使用這個操作對應(yīng)的權(quán)限柒桑。 (在manifest文件中 添加標(biāo)記)
android 系統(tǒng)提供了一系列這樣的權(quán)限,具體可以查看android 權(quán)限噪舀,另外魁淳,android系統(tǒng)在新的版本中會增加一些permission,可以查看android 版本信息傅联。
當(dāng)然先改,app也可以自定義屬于自己的permission 或?qū)儆陂_發(fā)者使用的同一個簽名的permission。定義一個permission 就是在menifest文件中添加一個permission標(biāo)簽蒸走。
android:icon="drawable?resource"
android:label="string?resource"
android:name="string"
android:permissionGroup="string"
android:protectionLevel=["normal"?|?"dangerous"?|
"signature"?|?"signatureOrSystem"]/>
android:description :對權(quán)限的描述仇奶,一般是兩句話,第一句話描述這個權(quán)限所針對的操作比驻,第二句話告訴用戶授予app這個權(quán)限會帶來的后果
android:label: 對權(quán)限的一個簡短描述
android:name :權(quán)限的唯一標(biāo)識该溯,一般都是使用 報名加權(quán)限名
android:permissionGroup: 權(quán)限所屬權(quán)限組的名稱
android:protectionLevel: 權(quán)限的等級,
normal 是最低的等級别惦,聲明次權(quán)限的app狈茉,系統(tǒng)會默認(rèn)授予次權(quán)限,不會提示用戶
dangerous? 權(quán)限對應(yīng)的操作有安全風(fēng)險掸掸,系統(tǒng)在安裝聲明此類權(quán)限的app時會提示用戶
signature? 權(quán)限表明的操作只針對使用同一個證書簽名的app開放
signatureOrSystem? 與signature類似氯庆,只是增加了rom中自帶的app的聲明
android:name 屬性是必須的,其他的可選扰付,未寫的系統(tǒng)會指定默認(rèn)值
下面通過指定一個BroadcastReceiver的權(quán)限來實(shí)驗(yàn)
首先創(chuàng)建了兩個app堤撵,app A ,app B 羽莺;
app A中注冊了一個BroadcastReceiver ,app B 發(fā)送消息
app A的menifest文件:
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)容
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文件中聲明使用相應(yīng)的權(quán)限盐固,app B發(fā)送的消息荒给,A是收不到的丈挟。
另外,也可在app B 的menifest文件中聲明權(quán)限時志电,添加android:protectionLevel=“signature”,指定app B只能接收到使用同一證書簽名的app 發(fā)送的消息曙咽。
http://berdy.iteye.com/blog/1782854