我知道Nexus 7上的相机可用性,所以我更改了我的清单,不需要如下所示的许可:
<uses-permission android:name="android.permission.CAMERA" android:required="false"/>
该应用仍然无法使用。在这一点上,我对谈论uses-feature
而非user-permission
:
请注意您声明(或暗示)的系统功能 运行您的应用程序或Play商店所需的将不会使您的应用程序 应用程序可供Nexus 7用户使用。始终声明硬件 根据需要对您的应用程序不重要的功能=“false”然后 在运行时检测该功能是否存在并逐步增强 功能
这是什么交易?我对功能和权限之间的区别感到困惑。
答案 0 :(得分:22)
uses-feature
声明您的应用使用哪种类型的硬件/软件可用性。您可以使用它来自动缩小它将显示的设备类型。如果应用程序能够在没有它们的情况下仍然可以正常运行,您可以将这些功能声明为可选功能,并且旨在处理功能不可用的情况(例如使用您提到的Nexus 7)。
uses-permission
声明您的应用允许使用哪些类型的功能。如果您声明了权限,就像您所做的那样,它让用户知道“嘿,这个应用程序可以使用我的相机”,他们可以决定是否批准该用法。您无法将权限标记为可选。
您应该将required
属性保留在uses-permission
标记之外,并使用uses-feature
为相机添加另一个标记,并在该标记中将其标记为{{1} }。例如:
required="false"
编辑:阅读this document,您可能还需要添加:
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>
因为相机许可意味着需要这两个功能。它可以在没有这个额外标签的情况下工作,但为了以防万一,它可能不会过度具体。