【发布时间】:2016-10-07 21:54:53
【问题描述】:
我有一个按钮,每次用户点击它,我都会调用javascript接口getLocation(),如果位置服务关闭,将用户带到设置让用户打开它。
我通过onConnected 和onLocationChanged 获取位置。每次我打开我的应用程序时,onConnected 都会被触发并获取位置。但是我注意到,当我从设置中启用位置服务并立即返回应用程序时,onConnected 被触发,但位置仍然是null。好像有延迟什么的。直到大约 3 秒后我再试一次,它会工作并为我获取位置。
这是我的相关代码:
安卓端:
protected Location location;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.web_view);
webView = (WebView) findViewById(R.id.webview);
......
}
// JavaScript Interface for location on Pick Listing Page
public class LocationInterface
{
@JavascriptInterface
public String getLocation() throws JSONException
{
JSONObject json = new JSONObject();
if (location != null)
{
json.put("lat", location.getLatitude());
json.put("lon", location.getLongitude());
return(json.toString());
}
else
{
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
return(null);
}
}
......//many override lifecycle methods here
@Override
public void onConnected(Bundle connectionHint)
{
location = LocationServices.FusedLocationApi.getLastLocation(googleApiClient);
}
@Override
public void onLocationChanged(Location newLocation)
{
location = newLocation;
}
我的问题是,我怎样才能毫不拖延地获得位置。
【问题讨论】:
标签: android