可能重复:
ICS Android enable gps programmatically? [closed using an alternative approach]
我使用下面的代码以编程方式启用和禁用GPS,并在2.2和2.3中完美运行。
Intent i = new Intent();
i.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
i.addCategory(Intent.CATEGORY_ALTERNATIVE);
i.setData(Uri.parse("3"));
context.sendBroadcast(i);
然而,当尝试使用ICS(4.0)时,它意识到它不起作用。然后我发现这是一个错误链接如下。 http://code.google.com/p/android/issues/detail?id=7890
我相信我们已经修好了ICS。
有没有人能告诉我在ICS中是否有其他方法可以解决这个问题?
我认为操作系统荒谬的“开源”有很多限制。我已经开始后悔选择在Android上开发我们的应用程序了。
答案 0 :(得分:1)
我认为这是一项安全功能,您无法以编程方式更改GPS状态。
为什么开源意味着它不应该有限制?我糊涂了。开源只意味着您可以访问源代码。
就个人而言,使用Cocoa Touch开发适用于Android的开发比使用iOS进行开发要痛苦得多。
编辑:
尝试使用此功能让用户知道他们需要启用GPS。
(来源:http://manishkpr.webheavens.com/android-syste-gps-setting-intent/)
private void checkGPS(){
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L,1.0f, this);
boolean isGPS = locationManager.isProviderEnabled (LocationManager.GPS_PROVIDER);
if(isGPS){
showToast("Gps On");
}else{
startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);
}
}
答案 1 :(得分:0)
这些限制是出于安全问题。您不应该尝试实现这种情况,因为它现在可以使用,但在接下来的几天内可以修复 - 例如自定义roms。
管理GPS的最佳解决方案是打开Android的GPS偏好设置,让用户手动启用/禁用GPS。