我目前正在第二个Android应用程序上工作,该应用程序包含Google Maps活动。在此活动中,我想向用户显示他们的当前位置。我设法做到了,它可以在我的两个设备(华为P smart和Galaxy S5)上运行。我还向我的朋友发送了该应用的APK,并在他的设备(华为P9 Lite)上调用task.getResult()后,当前位置返回null。在他的设备上,该方法将始终跳转到else语句(意味着currentLocation == null)。我使用了以下方法。
private void getDeviceLocation() {
Log.d(TAG, "getDeviceLocation: getting the devices current location");
try {
mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
mFusedLocationProviderClient.getLastLocation()
.addOnSuccessListener(this, new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location currentLocation) {
Log.d(TAG, "onComplete: found location!");
if (currentLocation != null) {
moveCamera(new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude()),
DEFAULT_ZOOM);
} else {
Log.d(TAG, "onComplete: current location is null");
Toast.makeText(MapsActivity.this, "unable to get current location", Toast.LENGTH_SHORT).show();
}
}
});
} catch (SecurityException e) {
Log.e(TAG, "getDeviceLocation: SecurityException: " + e.getMessage());
}
}
我已经尝试过/做了以下事情:
因为我在自己的设备上没有问题,并且在logcat的设备上找不到任何显着的东西(因为它们都在我的设备上工作),所以我很难理解为什么会这样。