避免Android市场过滤可选使用位置

And*_*zie 7 android android-manifest google-play

在我的应用程序中,我尝试使用位置信息(如果可用).因此我在我的清单中有这些权限:

例如

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)

注意:我没有位置,这是我所理解的用于在Android Market中过滤的标记.

当我上传到Android市场时,我收到了以下报告:

这个apk要求4个功能将用于Android Market过滤android.hardware.location.network android.hardware.location android.hardware.location.gps android.hardware.touchscreen

对我来说这表明只会出现具有location和location.network以及gps硬件的设备.

但我对位置的使用是可选的,如果它不可用,应用程序将工作.

我应该从我的清单中删除这些权限(当我尝试使用它时会出现异常吗?)?

有没有办法保留权限并避免基于它们的Android市场过滤?

Dee*_*rda 3

我的应用程序也有同样的问题。我猜这是因为它minSdkVersion是4,即Android 1.6。从<uses-feature>文档中:

一般来说,如果您的应用程序设计为在 Android 1.6 及更早版本上运行,则 android:required 属性在 API 中不可用,并且 Android Market 假定所有声明都是必需的。

这是有道理的,因为当您将某个功能声明为可选功能时,您应该使用 中的hasSystemFeature()方法来PackageManager检查当前设备是否具有该特定功能。但是,此方法本身仅适用于 API 级别 5!