我使用ACTION_IMAGE_CAPTURE
请求相机应用拍照。
根据{{3}},如果我的应用使用了相机功能,但没有要求它正常运行,则应将其保留在清单中
<manifest ... >
<uses-feature android:name="android.hardware.camera"
android:required="false" />
...
</manifest>
如果没有这个不必需的功能,我真的不明白将这些行显示在清单中的想法是不一样的。
我想知道写这个是什么意思?我可以安全地从清单中跳过这个吗?
如果我在清单中列出了该功能并不重要,我仍然可以在运行时检查它,更正hasSystemFeature(PackageManager.FEATURE_CAMERA)
?
答案 0 :(得分:1)
不,这不一样。正如docs所说:
该元素提供了一个必需属性,可让您指定应用程序是否需要在没有声明的功能的情况下才能运行,或者它是否更喜欢具有该功能,但可以在没有该功能的情况下运行。
这意味着拥有该功能将很好,但如果没有它,应用程序仍然可以正常工作。例如,一个可以拍照但在正常操作中不需要它的应用程序会使用required=false
作为相机。
您可以通过代码询问,是的。但问题是您需要某些特定硬件的permissions
imply:
如果应用程序请求与硬件相关的权限,Google Play会假定应用程序使用底层硬件功能,因此需要这些功能,即使可能没有相应的声明。对于此类权限,Google Play会将基础硬件功能添加到为应用程序存储的元数据中,并为其设置过滤器。
例如,如果某个应用程序请求CAMERA权限但未声明android.hardware.camera的元素,则Google Play会认为该应用程序需要相机,不应向其设备不提供相机的用户显示。
因此,如果您想使用某些功能而不是其他功能,并且您要包含权限,则可能需要声明您的应用确实需要存在某个设备功能。< / p>
答案 1 :(得分:0)
来自Android文档:
声明的目的是通知任何外部人员 您的硬件和软件功能集的实体 应用取决于。
一般情况下,您应该始终确认声明 应用程序所需的所有功能的元素
<uses-feature android:name="android.hardware.camera"
android:required="false" />
如果需要=&#34; false&#34;在清单中给出,然后应用程序使用相机,但它不是必须的应用程序工作,并且所有设备都可以从Play商店安装应用程序是否具有相机功能。
如果需要=&#34; true&#34;在清单中给出了具有相机功能的设备只能使用其他没有相机功能的设备无法从谷歌游戏商店安装。
这样,Google Play商店就可以过滤掉没有所需功能的设备的应用。
我希望它有所帮助!