不同的安卓权限级别

3
<使用向系统请求权限,而在应用程序和活动标记中使用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个回答

5

根据文档:

android:permission

客户端必须拥有的权限名称,以启动活动或以其他方式响应意图。如果未授予startActivity()或startActivityForResult()的调用者指定的权限,则其意图将不会传递到活动中。如果未设置此属性,则activity元素的permission属性设置的权限适用于该活动。如果两个属性都未设置,则该活动未受权限保护。有关权限的更多信息,请参见介绍中的权限部分和另一份文档《安全和权限》。

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

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

基本上,如果另一个应用程序通过意图调用您的活动,并且您以这种方式指定需要权限,则该应用程序必须访问该权限。否则,您的应用程序将拒绝该意图。


那么,为什么如果我在应用程序或活动中使用android:permission,即使我使用了<uses-permission>,我的应用程序也无法启动呢?因为我正在尝试运行自己的应用程序... - Tiago Costa
1
您提到您收到了一个“安全错误”,但是不清楚确切的错误是什么。也许您想编辑您的问题,提供有关安全错误具体消息的更多信息。 - nicholas.hauschild

4
您提到的<uses-permission>是一种“请求”,用于使用特定的“权限”。这会提示安装您的应用程序的用户,您希望访问设备的某些部分(如唤醒锁定、访问SD卡、电话状态等)。它还允许您的应用程序访问其他需要特定权限的应用程序(及其组件)。
当您在应用程序的各个组件上使用android:permission时,它会指定其他第三方应用程序需要具有哪些权限才能启动您的应用程序组件。

1

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