【问题标题】:App not available for Nexus 7 on Google Play应用程序不适用于 Google Play 上的 Nexus 7
【发布时间】:2012-09-05 21:50:21
【问题描述】:

我知道 Nexus 7 上的摄像头可用,因此我更改了清单,使权限不需要如下:

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

该应用程序仍然不可用。在这一点上,我对谈论uses-feature 而不是user-permission 的文档感到困惑:

注意您声明(或暗示)的系统功能是 需要运行您的应用程序,否则 Play 商店不会让您的 Nexus 7 用户可用的应用程序。始终声明硬件 对您的应用程序不重要的功能 required="false" 然后 在运行时检测该功能是否存在并逐步增强 功能

这里有什么问题?我对功能和权限之间的区别感到困惑。

【问题讨论】:

  • 你的清单中有 标签吗? 没有必填字段。 developer.android.com/guide/topics/manifest/…
  • 我没有在清单中使用标签
  • 您是否在上传到 Google Play 之前添加了 ?这可能是原因。 uses-permission 没有必需的标签,所以可能是 Manifest 在您请求相机权限时准备好了(应该在应用信息中可见?)

标签: android android-manifest android-market-filtering android-permissions


【解决方案1】:

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"/>

编辑:阅读this document,看来您可能还需要添加:

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

因为相机权限意味着这两个功能的要求。如果没有这个额外的标签,它可能会工作,但为了以防万一,过于具体可能不会有什么坏处。

【讨论】:

  • 好的,有道理,谢谢。 (我希望 ADT 会在您未正确使用标签时发出警告,我本可以避免为此再次发布应用程序)
  • 我真的很惊讶它以这种方式编译。不能对某些清单标签或其他东西进行内置检查吗?不确定,但希望这可以解决您的问题。 :)
  • 是的,我也很惊讶。最好在 google play 上有一个工具,它给出了 apk 和它告诉你可用/不可用的设备,如果不可用,原因。现在我会在再次发布应用程序后发现:-)。再次感谢
  • 认为您可以在上传 APK 后查看它在哪些设备上可用和不可用,但我绝对同意,令人恼火的是他们不这样做'不会告诉你为什么它不适用于给定的设备。
猜你喜欢
  • 2014-01-27
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-12
相关资源
最近更新 更多