【发布时间】:2012-06-18 19:37:31
【问题描述】:
今天在将我的应用程序上传到市场时,我发现它仅适用于具有 GPS 的设备,因此不包括某些平板电脑。
我的应用程序中的 GPS 是可选的。是否可以为有和没有 GPS 的设备发布一个应用程序,或者我需要制作一个额外的版本(不过没问题)?
如果可能的话,我想有某种方法可以检查 if(deviceHasGPS()){...}。 有吗?
这是我的清单的一部分:
<uses-permission android:name="android.permission.PREVENT_POWER_KEY" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
编辑:感谢Raghav Sood的回答!
添加到清单:
<uses-feature android:name="android.hardware.location.gps"
android:required="false" />
执行以下操作:
locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
boolean deviceHasGPS = false;
if (locationManager.getAllProviders().contains(LocationManager.GPS_PROVIDER)) {
deviceHasGPS = true;
}
要在带有 gps 的设备上测试它,只需用 if(deviceHasGPS){...} 包围 gps 的东西 然后在清单中删除:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
将 deviceHasGPS 设置为始终为 false 并查看 App force 是否关闭。
【问题讨论】:
-
谢谢,这可行,只要您不删除位置权限,应用程序就需要它们才能工作。
-
您也可以添加
<uses-feature android:name="android.hardware.location" android:required="false" />和<uses-feature android:name="android.hardware.location.network" android:required="false" />,因为有些设备没有任何定位服务。
标签: android gps android-manifest