我希望我的应用程序能够访问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.network
和
android.hardware.location
功能要求
-permission * ACCESS_FINE_LOCATION意味着android.hardware.location.gps
和
android.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" />
不应该足够吗?
答案 0 :(得分:3)
是的,由于权限存储在API中的方式,您必须包含所有权限。它们作为字符串存储在PackageManager class中。以你所关注的那个为例,android.hardware.location。看看它是如何与你在Manifest中键入的字符串完全相同。 Google Play会在过滤时查找这些完全匹配项。所以android.hardware.location.gps
实际上并不是android.hardware.location
的孩子,为了组织起见,它只是代表那样。