10

我希望我的应用程序能够访问 GPS/网络位置(如果它们可用)。我不希望 Google Play 过滤掉没有 GPS/网络定位器的设备。

我该怎么做?

目前我的清单上有这个:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />
<uses-feature android:name="android.hardware.location" android:required="false" />

但是,我不确定这是否足够,因为http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions-features指出:

-permission ACCESS_COARSE_LOCATION暗示android.hardware.location.networkandroid.hardware.location特征要求

-permission *ACCESS_FINE_LOCATION 意味着android.hardware.location.gpsandroid.hardware.location

我还必须添加 <uses-feature android:name="android.hardware.location.network" android:required="false" /> and <uses-feature android:name="android.hardware.location.gps" android:required="false" />吗?

为什么?

应该<uses-feature android:name="android.hardware.location" android:required="false" />不够吧?

4

1 回答 1

3

是的,由于权限存储在 API 中的方式,您必须将它们全部包含在内。它们作为字符串存储在PackageManager 类中。以您关心的android.hardware.location为例。看看字符串与您在清单中键入的内容完全相同。Google Play 在过滤时会查找这些完全匹配的内容。所以android.hardware.location.gps实际上不是 的孩子android.hardware.location,只是为了组织而这样表示。

于 2012-07-12T17:34:55.630 回答