2013-01-22 170 views
38

我注意到清单文件中有两种类型的权限,“权限”和“使用权限”,如下所示的两种权限:在manifest.xml文件中使用权限与android权限的权限

<permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

对于以下4个权限,当我将它们放到我的manifest.xml文件中时,我会使用它吗? uses-permissionspermissions

android.permission.ACCESS_NETWORK_STATE 

android.permission.ACCESS_WIFI_STATE 

android.permission.INTERNET 

android.permission.CHANGE_WIFI_MULTICAST_STATE 
+1

[AndroidManifest.xml中使用权限和权限标签之间的差异]的可能重复(http://stackoverflow.com/questions/3850799/diffrences-between-uses-permission-and-permissions-tag-in-androidmanifest -xml) – Pankaj

回答

51

对于

<permission> 

documentation状态:

声明可用于限制访问特定组件或本或其他应用功能的安全权限。

因此,由于您正在访问Android的权限,因此您需要改为uses-permission。此元素的文档状态如下:

请求必须授予应用程序的许可权,以使其可以按顺序 授权该应用程序正常运行。

<permission>制作自定义权限时,通常使用(例如做一个应用程序,其他应用程序可以在领带的时候,限制访问是必须的),当你的应用程序实际上需要它不许可” <uses-permission>使用通常没有。

19

让我们以“uses-permission ...”开头:假设您想在您的应用程序中使用GoogleMap作为示例,以查找任何办公室(如银行或任何其他办公室)的最近位置。你需要互联网。所以你需要授予你的Android设备访问INTERNET的权限。这是通过使用android权限调用完成的。

<uses-permission android:name="android.permission.INTERNET" /> 

现在来看看“权限..”:它的作用是它宣称可用于限制访问特定组件或这或其他功能安全许可applications.If您的应用程序需要一些资源或来自其他应用程序的某些功能,可以通过给出具体的类或包来使用。

<permission android:name="com.example.project.DEBIT_ACCT" . . . /> 

谢谢。欲了解更多信息,你可以阅读
http://developer.android.com/guide/topics/manifest/manifest-intro.html

+0

我不确定它的真实性,但不能将它们作为安装时授予的权限(一次)与运行时授予的权限(每次需要时)进行区分? – Dane411

4

总之,你需要的是使用权限声明。

Androird Document现在有一个专门讨论这两种用法的页面。

使用权限部分,它解释说,

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.android.app.myapp" > 
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> 
    ... 
</manifest> 

用于声明什么权限想使用。

虽然定义和执行权限你可以看到,

<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> 

用来定义自己的权限。

+0

该文档已经在其他给出这个问题的答案中引用/链接了。这个答案不会给已经给出的东西增加新的东西。 – SteveFerg

+0

嗨SteveFerg所有三个答案都引用了较旧的文档。这就是我在这里更新它的原因。如果我错了,请重新检查引用的引述并让我知道。 –

+0

具体来说,他们引用的文档并不是专门针对问题提问者所述的问题,而我的完全关注的是Android的权限 –