有如下所示的使用权限和使用功能:
<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相关的信息。
答案 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”属性。
有关暗示硬件功能的权限列表,请参阅 元素的文档。