在我的应用中,我尝试使用位置信息(如果可用)。因此我在我的清单中有这些权限:
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市场过滤?
答案 0 :(得分:3)
我的应用程序遇到了同样的问题。我想这是因为minSdkVersion
是4,即Android 1.6。来自<uses-feature>
documentation:
通常,如果您的应用程序设计为在Android 1.6及更早版本上运行,则API中不提供android:required属性,Android Market假定需要任何和所有声明。
这是有道理的,因为当您将某个功能声明为可选时,您应该使用PackageManager
中的hasSystemFeature()
方法来检查当前设备是否具有该特定功能特征。但是,此方法本身仅适用于API Level 5!