如何获知位置设置已更改?

时间:2016-11-07 10:12:31

标签: android geolocation location location-services

我已经阅读了Google docpost,尤其是有趣的@ bendaf的答案,关于管理位置设置,一切运作良好。

无论如何,如果用户首先决定不使用其位置然后决定激活它,问题仍然存在,应用程序不会被此操作触发,因此我不知道我可以请求定期更新。< / p>

我在这里想念的是什么?

3 个答案:

答案 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


我希望这有帮助!迟到总比没有好:)

祝您编程愉快!