2

我的问题与相机有关。当应用程序需要使用系统摄像头时,我们创建一个intentwith动作并在文件ACTION_IMAGE_CAPTURE中添加这样的权限。manifest

<uses-permission android:name="android.permission.CAMERA"/>

但除此之外,还有这样一个

<uses-feature android:name="android.hardware.camera"/>

它是干什么用的?我读到如果写了这行,那么如果手机没有摄像头,应用程序将不会安装。这是真的吗?除此之外,我们为什么需要这个?

以及在清单文件中该行<uses-feature/>通常负责什么?

4

5 回答 5

4
<uses-feature android:name="android.hardware.camera"/>

上面的行将用于检查设备是否有摄像头硬件。

当您在 Play 商店上传应用程序时,他们会根据特定设备的功能过滤您的应用程序,

如果任何设备将在 Play 商店中搜索您的应用,并且该设备没有摄像头硬件,则不允许他们在该设备上安装应用。

但如果您的要求是在设备没有 camara 硬件的情况下强制下载应用程序,您可以使用: <uses-feature android:name="android.hardware.camera" android:required="false"/> android:required = "false" 将允许您安装

希望你能理解

于 2019-05-28T13:27:15.983 回答
3

谷歌文档<uses-feature>本身明确指出:

Google Play 使用<uses-feature>您的应用清单中声明的​​元素从不满足其硬件和软件功能要求的设备中过滤您的应用。

通过指定应用程序所需的功能,您可以让 Google Play 仅向设备满足应用程序功能要求的用户展示您的应用程序,而不是向所有用户展示。

Android 中的某些权限与设备的某些硬件/软件功能相关联,例如 CAMERA。由于市场上的每台 Android 设备的硬件和软件配置都不同,因此您尝试在应用中添加的某些功能很可能并不支持所有 Android 设备。如果您尝试在无摄像头设备中使用摄像头(表面假设),那么您的应用程序将无法按预期运行。

简而言之,如果您希望您的应用程序仅可用于具有该特定功能的一组设备,那么您可以<uses-feature>在清单中添加具有所需功能的标签。这仅用于根据设备配置和支持过滤 Play 商店中的应用程序。您可以根据需要定义零个或多个<uses-feature>功能。

注意:如果您不希望您的应用仅仅为了不影响应用整体用户体验的功能而被过滤掉,您可以巧妙地禁用该特定功能(如果它在您的应用中不可用)。

为此,你必须写

<uses-feature android:name="YOUR_NON_COMPULSORY_FEATURE" android:required="false" />

例如,如果您的应用程序使用 CAMERA 功能,但您的应用程序不依赖于该功能,您可以只禁用 CAMERA 功能以提供无故障的用户体验。

于 2019-05-28T13:50:48.127 回答
1

这是非常重要的部分。假设您的应用程序使用特定的硬件,并且对于您的应用程序来说,硬件必须在设备上可用才能使用您的应用程序是必不可少的。如果已定义,您的应用程序将被过滤掉那些具有该特定硬件的设备。

注意:因为它在谷歌开发者网站上有很好的记录

**Google Play 使用您的应用清单中声明的​​元素从不满足其硬件和软件功能要求的设备中过滤您的应用。

通过指定应用程序所需的功能,您可以让 Google Play 仅向设备满足应用程序功能要求的用户展示您的应用程序,而不是向所有用户展示。**

请参阅此链接以获取更多参考指南

于 2019-05-28T13:24:37.090 回答
1

作为开发人员 - 让我们就您的应用向自己提出这个问题。

用户将如何处理我的手机没有摄像头的应用程序?

如果上面的答案是“不多” - 那么如果用户不能用它做很多事情,那么允许用户在手机上安装你的应用程序有什么意义呢?这对用户来说是浪费时间和互联网带宽。

此外,如果用户最终得知这个应用程序没有多大用处而感到非常沮丧,他们可能会在 Play 商店中对您的应用程序评分不佳。

因此,它可以<uses-feature/>选择保护开发人员和用户免受上述情况的影响。

于 2019-05-28T14:03:19.370 回答
1

<uses-feature/>是否可以指导 Google Play 商店从没有相机硬件的设备中过滤掉这个应用程序。

于 2019-05-28T13:25:31.383 回答