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

时间:2011-05-17 13:58:43

标签: android android-manifest google-play

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

e.g。

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

注意:我没有位置,这是我所理解的用于在Android电子市场中过滤的标记。

当我上传到Android电子市场时,我会收到此消息:

  

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

对我来说,它只会显示具有location和location.network以及gps硬件的设备。

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

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

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

1 个答案:

答案 0 :(得分:3)

我的应用程序遇到了同样的问题。我想这是因为minSdkVersion是4,即Android 1.6。来自<uses-feature> documentation

  

通常,如果您的应用程序设计为在Android 1.6及更早版本上运行,则API中不提供android:required属性,Android Market假定需要任何和所有声明。

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