天天看點

andorid 5.0 permission出錯 INSTALL_FAILED_DUPLICATE_PERMISSION

轉載自:http://blog.csdn.net/szu_tanglanting/article/details/43194169

andorid 5.0 permission出錯 INSTALL_FAILED_DUPLICATE_PERMISSION

在安裝的時候出現失敗:

<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就提示安裝不上了:

andorid 5.0 permission出錯 INSTALL_FAILED_DUPLICATE_PERMISSION

這個現象和我們在androidL上遇到應用安裝不上是同樣的問題,是以我們應該叫第三方把應用不是自己聲明的應用删除掉,隻應用就行了(即用user-permission的方式)

繼續閱讀