permission和uses-permission的区别

        首先,先看一下permission定义的格式:

<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"] />

        上面代码来自官方文档: http://developer.android.com/guide/topics/security/security.html

propectionLevel这个属性是必须声明,告诉系统通知用户的应用要求许可,或允许谁认为获得许可的情况下。

permissionGroup这个是可选的,被用于协助t系统向用户显示权限,一般会像(listed inandroid.Manifest.permission_group)这个一样设置为标准系统组,很少自定义,最好使用已经定义的,使用起来也方便。

lable,name和cicon用于描述权限。


  在launcher2的manifest源代码中,分别有permission和uses-permission的定义,

 <permission
        android:name="com.android.launcher.permission.INSTALL_SHORTCUT"
        android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
        android:protectionLevel="normal"
        android:label="@string/permlab_install_shortcut"
        android:description="@string/permdesc_install_shortcut" />
    <permission
        android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"
        android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
        android:protectionLevel="normal"
        android:label="@string/permlab_uninstall_shortcut"
        android:description="@string/permdesc_uninstall_shortcut"/>
    <permission
        android:name="com.android.launcher.permission.READ_SETTINGS"
        android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
        android:protectionLevel="normal"
        android:label="@string/permlab_read_settings"
        android:description="@string/permdesc_read_settings"/>
    <permission
        android:name="com.android.launcher.permission.WRITE_SETTINGS"
        android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
        android:protectionLevel="normal"
        android:label="@string/permlab_write_settings"
        android:description="@string/permdesc_write_settings"/>


    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.SET_WALLPAPER" />
    <uses-permission android:name="android.permission.SET_WALLPAPER_HINTS" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.BIND_APPWIDGET" />
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
    <uses-permission android:name="com.android.launcher.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.SET_ANIMATION_SCALE" />

上面是自己定义的permission,下面是调用系统的权限,在上面自己定义的权限是在哪里是用的哪?在manifest文件中的101行:

<receiver
            android:name="com.android.launcher2.InstallShortcutReceiver"
            android:permission="com.android.launcher.permission.INSTALL_SHORTCUT">
            <intent-filter>
                <action android:name="com.android.launcher.action.INSTALL_SHORTCUT" />
            </intent-filter>
        </receiver>

InstallShortcutReceive使用了上面定义的INSTALL_SHORTCUT的权限。

            两者之间的不同之一就是,作用域不同,在manifest.xml文件中,<uses-permission>是和<application>同级的节点,一般<uses-permission >是在</application>后面的。但<permission>就不同了,是定义在<application>和</application>之间,和Activity、Service同级别的,同时使用group的权限组可以大幅减少你同类型相似权限的声明。(这段表述有误,应该是同级别)

    其二可能就是<uses-permission>是官方定义的权限,是调用别人的东西的时候自己需要声明的权限,<permission>是自己定义的权限,就是别人调用这个程序时需要用<uses-permission>来声明。

在一般情况下实际上不需要为自己的应用程序声明某个权限,除非你提供了供其他应用程序调用的代码或者数据。这个时候你才需要使用<permission>这个标签,很显然这个标签可以让我们声明自己程序的权限。



  • 11
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
<uses-permission>是Android中用于声明应用程序需要使用的权限的标签。它是Android预定义的权限,用于控制应用程序对设备功能和资源的访问权限。通过在AndroidManifest.xml文件中使用<uses-permission>标签,开发者可以向系统声明应用程序需要使用的权限。\[1\] 例如,如果应用程序需要读取和写入用户提供者的权限,可以在AndroidManifest.xml文件中添加以下代码: <uses-permission android:name="com.scc.userprovider.permission.read"/> <uses-permission android:name="com.scc.userprovider.permission.write"/>\[2\] 这样,应用程序就可以在运行时访问用户提供者的读取和写入权限了。\[2\] 需要注意的是,<uses-permission>标签只能声明系统预定义的权限,如果需要声明自定义权限,需要使用<permission>标签。\[1\] #### 引用[.reference_title] - *1* [Android权限操作之uses-permission详解](https://blog.csdn.net/weixin_33946605/article/details/85920868)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [uses-permissionpermission区别及使用](https://blog.csdn.net/g984160547/article/details/119951397)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值