andorid 5.0 permission出错 INSTALL_FAILED_DUPLICATE_PERMISSION

转载自:http://blog.csdn.net/szu_tanglanting/article/details/43194169


在安装的时候出现失败:

 

<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="自定义actionpermission"

                  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的方式)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值