轉載自:http://blog.csdn.net/szu_tanglanting/article/details/43194169
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiIXZ05WZD9CX5RXa2Fmcn9CXwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwlb1cVYwUzVZNHZtJGaSNDWxA3MjZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39jN4kzM1UDM0EzNyEDM1EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
在安裝的時候出現失敗:
<uses-permission android:name="com.ut.permission.DEVICE_STATE"></uses-permission>這個權限應該是用而不是聲明<permissionandroid:name="com.ut.permission.DEVICE_STATE"></ permission>
聲明權限隻能有一個app聲明,如果有多個app聲明一個權限,那它必須是簽名也一樣的。這樣做的好處:保證世界範圍内以簽名為機關的聲明permission隻有一份,如果别的公司要用那隻能以引用的形式(uses-permission)來擷取權限,而不能再繼續對這個權限進行聲明了。(這裡說的不同公司代表簽名不同)
這樣很好的限制了開發人員随便聲明permission
Permission的聲明裡面有權限安全屬性的。
<permission
android:description="stringresource"
android:icon="drawableresource"
android:label="stringresource"
android:name="string"
android:permissionGroup="string"
android:protectionLevel=["normal" | "dangerous" |
"signature" | "signatureOrSystem"] />
android:description: 描述這個權限所針對的操作及使用者授予這個權限的後果
android:label: 權限的一個簡短描述
android:name: 權限的唯一辨別,一般都是使用 報名權重限名
android:permissionGroup: 權限所屬權限組的名稱
android:protectionLevel:權限的等級
normal:
是最低的等級,聲明次權限的app,系統會預設授予次權限,不會提示使用者
dangerous:
權限對應的操作有安全風險,系統在安裝聲明此類權限的app時會提示使用者
signature:
權限表明的操作隻針對使用同一個證書簽名的app開放
signatureOrSystem:
與signature類似,隻是增加了rom中自帶的app的聲明
這由于權限可以通過定義來進行設定,是以不能随便聲明,要用的時候隻是user-permission
自個寫的demo進行認證了這個結論:
1:我寫了2個Demo
Demo1的AndroidManifest.xml中聲明了
<permission android:protectionLevel="normal"android:name="com.tutor.permission.VIEW">
</permission>
<activity android:name=".ViewActivity"
android:label="自定義action與permission"
android:permission="com.tutor.permission.VIEW"
>
<intent-filter>
<action android:name="android.tutor.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
Demo2的AndroidManifest.xml中引用:
<uses-permissionandroid:name="com.tutor.permission.VIEW"></uses-permission>
這個形式在android4.4 和android5.0中多沒問題。
如果在Demo2的AndroidManifest.xml中引用:
<permission android:protectionLevel="normal" android:name="com.tutor.permission.VIEW">
</permission>
<uses-permissionandroid:name="com.tutor.permission.VIEW"></uses-permission>
這麼寫就有問題了,多了聲明;
這個在android4.4還是沒問題的
但是在在android5.0就提示安裝不上了:
這個現象和我們在androidL上遇到應用安裝不上是同樣的問題,是以我們應該叫第三方把應用不是自己聲明的應用删除掉,隻應用就行了(即用user-permission的方式)