AndroidManifest.xml中的Uses-Permission和Permissions标签之间的区别

56

Uses-PermissionPermissions标签在AndroidManifest.xml中有什么区别? 我了解到uses-permission标签用于从我们的应用程序访问Internet、Location等。但我不明白为什么应该在Manifest文件中使用permissions标签以及它与uses-permission的区别。

2个回答

92

引用文档

要强制执行自己的权限,您必须首先在您的AndroidManifest.xml文件中使用一个或多个<permission>标签声明它们。例如,希望控制谁可以启动其活动的应用程序可以声明此操作的权限,如下所示:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.me.app.myapp" >

    <permission android:name="com.me.app.myapp.permission.DEADLY_ACTIVITY"
        android:label="@string/permlab_deadlyActivity"
        android:description="@string/permdesc_deadlyActivity"
        android:permissionGroup="android.permission-group.COST_MONEY"
        android:protectionLevel="dangerous" />

</manifest>
因此,<uses-permission>是当您的应用程序正在寻求用户的许可以使用某些功能时使用的,而<permission>是当您的应用程序需要其他应用程序寻求用户的许可以使用您的某些功能时使用的。

3
第三方应用如何获取我的DEADLY_ACTIVITY权限以使用我的应用程序的某些功能?第三方应用需要在其清单文件中声明类似于以下内容的内容吗?<uses-permission android:name=com.me.app.myapp.permission.DEADLY_ACTIVITY>? - Akh
5
@AKh:是正确的。如果您对这个话题有其他问题,请使用右上角的“提问”链接,而不是在两年前的回答下评论。 - CommonsWare
@UnKnown:很少有开发者需要定义自定义权限。除非他们正在实现一套应用程序或具有SDK的应用程序,否则不需要自定义权限,而且可能会有害。这个示例项目有两个应用程序模块,其中app定义了一个自定义的<permission>,而client具有相应的<uses-permission>元素。 - CommonsWare
你能否给我简单介绍一下android:permission属性?我找了很多但找不到答案。你有什么链接吗?即使我也无法理解Android清单文档中的相关内容。 - Asif Mushtaq
@UnKnown:你可以使用它来表示只有客户端持有指定权限时才能使用特定组件(活动、服务、接收器、提供者)。请参见我链接的示例应用程序中的此行。顺便说一句,“即使我也无法理解 Android 清单文档”——这些内容在各种 Android 应用程序开发书籍中都有涉及。 - CommonsWare
显示剩余3条评论

0

简单来说:

  • <permission> 用于定义自定义权限。

  • <uses-permission> 用于在应用程序中使用权限。

您可能还对自定义权限的安全问题感兴趣,截至2018年2月。他们在第2节中对权限的解释似乎比文档更清晰。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接