android:使用功能中的“必需”与用户权限中的“requiredFeature”之间有什么区别?

时间:2018-03-14 10:47:39

标签: android permissions

有如下所示的使用权限和使用功能:

<uses-permission android:name="android.permission.CAMERA" android:requiredFeature="false"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>

我对“android:requiredFeature”属性并不十分清楚。它与使用功能中的“android:required”效果相同吗? 我只是在Android开发者网站和google ....中找不到android:requiredFeature相关的信息。

2 个答案:

答案 0 :(得分:3)

是或多或少都具有相同的效果。 android:requiredFeature仅在API级别26及更高版本中使用,如果您的应用程序minSdkVersion小于26,则应用程序将忽略该属性。

<uses-permission>通常用于指定用户必须授予的权限才能使应用正常运行,而必须用于过滤应用适用于Google Play上的设备。如果您希望根据应用使用的硬件功能过滤设备,建议您在清单中定义<uses-feature>元素。

正如其他答案中所提到的,基于<uses-permission> Google Play可以假设您的应用需要基础硬件功能,并且可以基于此过滤您的应用,但并非总是如此,您的应用可能无需工作该硬件功能但它更喜欢具有该功能,因此,为了避免基于<uses-permission>的过滤,android:requiredFeature属性用于增强您对过滤的控制。

答案 1 :(得分:1)

我认为这是造成这种差异的主要原因,这并不是真正的区别,而是管理您希望应用商店对您的应用做什么的更有效的案例。

  

在某些情况下,您请求的权限    可以影响您的应用程序的过滤方式   Google Play。

     

如果您请求与硬件相关的权限 - 例如CAMERA -   Google Play假定您的应用需要基础版   硬件功能,并从没有的设备中过滤应用程序   提供它。

     

要控制过滤,请始终明确声明硬件功能    元素,而不是依赖于Google Play   “发现”元素中的要求。然后,如果   如果要禁用特定功能的过滤,可以添加   声明的android:required =“false”属性。

     

有关暗示硬件功能的权限列表,请参阅   元素的文档。

来自:Android developers