Android -- 自定义权限
在android系統(tǒng)的安全模型中,應(yīng)用程序在默認(rèn)的情況下不可以執(zhí)行任何對(duì)其他應(yīng)用程序,系統(tǒng)或者用戶帶來負(fù)面影響的操作。如果應(yīng)用需要執(zhí)行某些操作,就需要聲明使用這個(gè)操作對(duì)應(yīng)的權(quán)限。 (在manifest文件中 添加標(biāo)記)。
app可以自定義屬于自己的permission 或?qū)儆陂_發(fā)者使用的同一個(gè)簽名的permission。定義一個(gè)permission 就是在menifest文件中添加一個(gè)permission標(biāo)簽。?
<permission android:description="string resource" android:icon="drawable resource" android:label="string resource" android:name="string" android:permissionGroup="string" android:protectionLevel=["normal" | "dangerous" | "signature" | "signatureOrSystem"] />- android:description :對(duì)權(quán)限的描述,一般是兩句話,第一句話描述這個(gè)權(quán)限所針對(duì)的操作,第二句話告訴用戶授予app這個(gè)權(quán)限會(huì)帶來的后果?
 - android:label: 對(duì)權(quán)限的一個(gè)簡(jiǎn)短描述?
 - android:name :權(quán)限的唯一標(biāo)識(shí),一般都是使用 報(bào)名加權(quán)限名?
 - android:permissionGroup: 權(quán)限所屬權(quán)限組的名稱?
 - android:protectionLevel: 權(quán)限的等級(jí)。?normal 是最低的等級(jí),聲明次權(quán)限的app,系統(tǒng)會(huì)默認(rèn)授予次權(quán)限,不會(huì)提示用戶;dangerous? 權(quán)限對(duì)應(yīng)的操作有安全風(fēng)險(xiǎn),系統(tǒng)在安裝聲明此類權(quán)限的app時(shí)會(huì)提示用戶?;signature? 權(quán)限表明的操作只針對(duì)使用同一個(gè)證書簽名的app開放?;signatureOrSystem? 與signature類似,只是增加了rom中自帶的app的聲明
 
android:name 屬性是必須的,其他的可選,未寫的系統(tǒng)會(huì)指定默認(rèn)值
Code
首先創(chuàng)建了兩個(gè)app,app A ,app B ;?app A中注冊(cè)了一個(gè)BroadcastReceiver ,app B 發(fā)送消息?
app A的menifest文件:?
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.testbutton" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" /> <!-- 聲明權(quán)限 --> <permission android:name="com.example.testbutton.RECEIVE" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" launcheMode="singleTask" android:configChanges="locale|orientation|keyboardHidden" android:screenOrientation="portrait" android:theme="@style/android:style/Theme.NoTitleBar.Fullscreen" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- 注冊(cè)Broadcast Receiver,并指定了給當(dāng)前Receiver發(fā)送消息方需要的權(quán)限 --> <receiver android:name="com.example.testbutton.TestButtonReceiver" android:permission="com.example.testbutton.RECEIVE" > <intent-filter> <action android:name="com.test.action" /> </intent-filter> </receiver> </application> </manifest>app B 的menifest 文件內(nèi)容:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.testsender" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" /> <!-- 聲明使用指定的權(quán)限 --> <uses-permission android:name="com.example.testbutton.RECEIVE" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>這樣app B 給app A 發(fā)送消息,A就可以收到了,若未在app B的menifest文件中聲明使用相應(yīng)的權(quán)限,app B發(fā)送的消息,A是收不到的。
同樣應(yīng)用于Activity等組件。?
另外,也可在app B 的menifest文件中聲明權(quán)限時(shí),添加android:protectionLevel="signature",指定app B只能接收到使用同一證書簽名的app 發(fā)送的消息。?
我是天王蓋地虎的分割線
參考:http://berdy.iteye.com/blog/1782854
轉(zhuǎn)載于:https://www.cnblogs.com/yydcdut/p/5042481.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Android -- 自定义权限的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 宏碁会发布Spin 5 2022吗?
 - 下一篇: 朝闻自习室【鲁谷店】能住宿吗