我已经阅读了Google doc和post,尤其是有趣的@ bendaf的答案,关于管理位置设置,一切运作良好。
无论如何,如果用户首先决定不使用其位置然后决定激活它,问题仍然存在,应用程序不会被此操作触发,因此我不知道我可以请求定期更新。< / p>
我在这里想念的是什么?
答案 0 :(得分:0)
每次用户启动应用程序时,您都可以提供AlertDialog,以便用户可以启用该位置。但这会有点烦人,因为每次你不得不否认同样的事情。
或者,您可以使用“偏好设置”,以便用户可以启用/禁用位置
答案 1 :(得分:0)
还有另一种更好的方法。使用 LocationListener 。这是你想要实现的唯一目的。
public class XYZ Activity implements LocationListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,10,this);
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
}
我认为这是你正在寻找的正确的事情。这是事件的方式。 快乐编码:)
答案 2 :(得分:0)
@fralbo尽管此线程有点旧,但我只是想为您提供解决方案,因为我最近不得不自己做类似的事情。
我建议使用意图过滤器BroadcastReceiver
在您的应用中实现PROVIDERS_CHANGED
。.
每当“位置/ GPS提供商”状态更改时,这都会触发-您可以在if
的{{1}}方法中使用BroadcastReceiver
语句来确定您的条件是否满足相遇,然后进行相应的操作。例如,在onReceive
的{{1}}方法中,您可以确定onReceive
事件是否使GPS可用(以及达到何种程度)-并且现在可以满足您应用程序的需求,则可以调用应用程序中负责启动对GPS引擎的所需调用的任何方法,等等。
这是代码示例的示例:
BroadcastReceiver
我希望这有帮助!迟到总比没有好:)
祝您编程愉快!