LocationServices.FusedLocationApi.requestLocationUpdates是Google Play服务中的一个方法,用于请求获取设备的位置更新。该方法需要传入一个GoogleApiClient对象和一个LocationRequest对象作为参数。
当调用requestLocationUpdates方法后,系统会开始监听设备的位置变化,并在位置发生变化时调用注册的LocationListener对象的onLocationChanged方法。但是,如果在调用requestLocationUpdates方法后,没有调用onLocationChanged方法,可能是由于以下几个原因:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
同时,还需要在代码中请求运行时权限,以获取定位权限:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION_PERMISSION);
}
implementation 'com.google.android.gms:play-services-location:17.1.0'
并在代码中检查Google Play服务的可用性:
GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance();
int resultCode = googleApiAvailability.isGooglePlayServicesAvailable(this);
if (resultCode != ConnectionResult.SUCCESS) {
if (googleApiAvailability.isUserResolvableError(resultCode)) {
googleApiAvailability.getErrorDialog(this, resultCode, REQUEST_GOOGLE_PLAY_SERVICES).show();
} else {
// 不支持Google Play服务,处理相应逻辑
}
}
综上所述,如果调用LocationServices.FusedLocationApi.requestLocationUpdates方法后没有调用onLocationChanged方法,可能是由于设备未开启定位功能、权限问题或Google Play服务未安装或版本过低等原因导致。需要逐一排查这些问题,并进行相应的处理。
领取专属 10元无门槛券
手把手带您无忧上云