应用程序不适用于Google Play上的Nexus 7

gwv*_*eri 13 android android-manifest android-market-filtering android-permissions

我知道Nexus 7上的相机可用性,所以我更改了我的清单,不需要如下所示的许可:

<uses-permission android:name="android.permission.CAMERA" android:required="false"/>
Run Code Online (Sandbox Code Playgroud)

该应用仍然无法使用.在这一点上,我对谈论的文件感到困惑,uses-feature而不是user-permission:

请注意,您声明(或暗示)运行应用程序需要哪些系统功能,否则Play商店不会将您的应用程序提供给Nexus 7用户.一直宣称不给你的应用程序的关键硬件功能所需="假",那么在运行时检测,如果该功能存在,并逐步增强功能

这是什么交易?我对功能和权限之间的区别感到困惑.

kco*_*ock 22

uses-feature声明您的应用使用的硬件/软件可用性类型.您可以使用它来自动缩小它将显示的设备类型.如果应用程序能够在没有它们的情况下仍然可以正常运行,您可以将这些功能声明为可选功能,并且旨在处理功能不可用的情况(例如使用您提到的Nexus 7).

uses-permission声明允许您的应用使用哪些类型的功能.如果您声明了权限,就像您所做的那样,它让用户知道"嘿,这个应用程序可以使用我的相机",他们可以决定是否批准该用法.您无法将权限标记为可选.

您应该将该required属性保留在uses-permission标记之外,并为摄像机添加另一个标记uses-feature,并在该标记中将其标记为required="false".例如:

<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>
Run Code Online (Sandbox Code Playgroud)

编辑:阅读此文档,似乎您可能还需要添加:

<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
Run Code Online (Sandbox Code Playgroud)

因为相机许可意味着需要这两个功能.如果没有这个额外的标签,它可能会工作,但为了以防万一,它可能不会过度具体.

  • 我认为*您可以查看哪些设备可用并且在您上传APK后无法使用,但我绝对同意,令人恼火的是他们没有告诉您*为什么*它不适用于给定的设备. (4认同)