不同的Android权限级别

时间:2011-07-31 00:07:02

标签: android

在应用程序和活动代码中使用<uses-permission>和android:permission请求权限有什么区别?

当我只使用:

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

该应用运行正常,但如果我也使用:

<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true" 
android:permission="android.permission.WAKE_LOCK">

甚至:

<activity android:name=".android.Everlong"
          android:label="@string/app_name" android:screenOrientation="portrait" 
          android:permission="android.permission.WAKE_LOCK">

由于安全错误,该应用无法启动...

3 个答案:

答案 0 :(得分:5)

来自documentation

  

机器人:权限

     

客户必须拥有的权限的名称   启动活动或以其他方式让它响应意图。如果一个   startActivity()或startActivityForResult()的调用者还没有   授予指定权限后,其意图将不会被传递给   活动。如果未设置此属性,则由权限设置    element的权限属性适用于活动。   如果两个属性均未设置,则活动不受a保护   允许。有关权限的详细信息,请参阅权限   介绍部分和另一份文件,安全和   权限。

uses-permission - 在(应用程序的)安装时,用户必须接受此权限。

android:permission - 当另一个应用程序想要调用您的应用程序时,您可以指定他们需要请求的权限(在安装其他应用程序时)给您打电话。

基本上,如果其他应用程序想通过Activity呼叫您Intent,并且您指定需要这种方式的权限,则该应用必须有权访问该权限。否则,Intent将被您的应用拒绝。

答案 1 :(得分:4)

正如您所提到的,

<uses-permission>是使用特定“权限”的“请求”。这会提醒用户安装您想要访问其设备某些部分的应用程序(例如唤醒锁,访问SD卡,手机状态等)。它还允许您的应用访问需要特定权限的其他应用(及其组件)。

当您在应用的各个组件上使用android:permission时,它会指示其他第三方应用需要哪些权限才能启动您的应用组件。

答案 2 :(得分:1)

我做了一点环顾,这里是活动内权限属性的文档: http://developer.android.com/reference/android/R.styleable.html#AndroidManifestActivity_permission

此页面: http://developer.android.com/guide/topics/security/security.html 还讨论了清单中的一些权限和安全性。