<uses-permission> vs android:permission

时间:2018-04-10 00:24:02

标签: android android-permissions

有什么区别:

<uses-permission android:name="some_permission" />

<activity android:permission="some_permission" />

我的应用程序使用前者而不是后者仍然有效。我为什么要使用后者? 具体来说,为什么没有后者才能运作?

提前致谢...

3 个答案:

答案 0 :(得分:2)

虽然从结构和标签中可以清楚地看到,uses-permission表示应用程序将使用此权限,android:permission 内部活动标记表示启动该权限所需的权限活动。 以下是官方文档中uses-permissionandroid:permission之间的差异。

android:permission活动权限执行

  

使用该权限应用的权限   android:清单中标记的权限属性   限制谁可以启动该活动。在此期间检查权限   Context.startActivity()和Activity.startActivityForResult()。如果   调用者没有SecurityException所需的权限   从电话中抛出。

链接:https://developer.android.com/guide/topics/permissions/overview.html#permission_enforcement

uses-permission

  

指定用户必须为其授予的系统权限   该应用程序正常运行。权限由用户授予   应用程序已安装(在运行Android 5.1和Android的设备上)   应用程序运行时(在运行Android 6.0和Android的设备上)   更高)。

链接:https://developer.android.com/guide/topics/manifest/uses-permission-element.html

现在来你的问题

  

我的应用程序使用前者而不是后者仍然有效。为什么   我会使用后者吗?具体来说,为什么它没有   后者?

回答:如上所述,如果您希望其他应用访问您的某项活动,即您的应用或活动不需要该权限,则很明显后者是必需的但是其他应用启动那个活动。因此,如果没有后者,即android:permission

,您的应用就能完美运行

希望它有意义。

答案 1 :(得分:1)

  1. <uses-permission>是您的应用程序在寻求用户使用某些功能的权限时

    例如:

  2. <uses-permission
         android:name="android.permission.WRITE_EXTERNAL_STORAGE"
         android:maxSdkVersion="18" />
    
    1. <permission>是指您的应用程序要求其他应用程序寻求用户使用您的某些功能的许可。

      例如:

    2. <permission android:description="string resource"
                  android:icon="drawable resource"
                  android:label="string resource"
                  android:name="string"
                  android:permissionGroup="string"
                  android:protectionLevel=["normal" | "dangerous" |
                                           "signature" | ...] />
      

      您可以阅读: https://developer.android.com/guide/topics/manifest/permission-element.html

答案 2 :(得分:1)

总之,

operator[]是您的应用应该执行某些用户数据敏感或危险操作的东西。

<uses-permission android:name="some_permission" />是应用中的其他应用或其他组件应该保留的内容,以便开始您的活动。