位置:GPS /网络权限:如果可用,则需要

时间:2012-07-12 17:23:46

标签: android android-permissions

我希望我的应用程序能够访问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" /><uses-feature android:name="android.hardware.location.gps" android:required="false" />

为什么呢?

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

1 个答案:

答案 0 :(得分:3)

是的,由于权限存储在API中的方式,您必须包含所有权限。它们作为字符串存储在PackageManager class中。以你所关注的那个为例,android.hardware.location。看看它是如何与你在Manifest中键入的字符串完全相同。 Google Play会在过滤时查找这些完全匹配项。所以android.hardware.location.gps实际上并不是android.hardware.location的孩子,为了组织起见,它只是代表那样。