在 Android 中出现的位置为空
Location coming up as null in Android
我在 MainActivity
.
的 onCreate()
和 onResume()
方法中调用了这个方法
基本上,我使用它是为了获取当前位置的城市名称并将其设置为字符串,以便稍后使用。
为了看看它是否有效,我将其设置为我的欢迎文字。
方法是:
private void getLocation() {
if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
fusedLocationProviderClient.getLastLocation().addOnCompleteListener(new OnCompleteListener<Location>() {
@Override
public void onComplete(@NonNull Task<Location> task) {
Location location = task.getResult();
if (location != null) {
try {
Geocoder geocoder = new Geocoder(MainActivity.this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
cityName = addresses.get(0).getLocality(); // sets the address here
Welcome.setText(cityName);
} catch (IOException e) {
e.printStackTrace();
}
} else {
Toast.makeText(MainActivity.this, "Location null error", Toast.LENGTH_SHORT).show();
}
}
});
} else {
ActivityCompat.requestPermissions(MainActivity.this, new String[] {Manifest.permission.ACCESS_FINE_LOCATION},44);
}
}
事实是,当我在 android studio 模拟器上时,它在大多数情况下工作正常。
但是当我 运行 我的 phone 上的应用程序时,我得到了我设置的“位置空错误”提示。
意思是位置为空。即使在设备设置中打开位置。
我不知道是什么问题。
在您的情况下,您想在 locationupdates 方法中使用地理编码器。一旦位置不为空,请使用该位置查找您的地址,然后停止更新。
为此,您需要使用 requestLocationUpdates,因为如果其他应用程序在特定时间内未请求该位置,lastKnownlocation 可能为 null。
看看这个问题中的。它将帮助您通过使用位置更新来获取位置
我在 MainActivity
.
onCreate()
和 onResume()
方法中调用了这个方法
基本上,我使用它是为了获取当前位置的城市名称并将其设置为字符串,以便稍后使用。 为了看看它是否有效,我将其设置为我的欢迎文字。
方法是:
private void getLocation() {
if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
fusedLocationProviderClient.getLastLocation().addOnCompleteListener(new OnCompleteListener<Location>() {
@Override
public void onComplete(@NonNull Task<Location> task) {
Location location = task.getResult();
if (location != null) {
try {
Geocoder geocoder = new Geocoder(MainActivity.this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
cityName = addresses.get(0).getLocality(); // sets the address here
Welcome.setText(cityName);
} catch (IOException e) {
e.printStackTrace();
}
} else {
Toast.makeText(MainActivity.this, "Location null error", Toast.LENGTH_SHORT).show();
}
}
});
} else {
ActivityCompat.requestPermissions(MainActivity.this, new String[] {Manifest.permission.ACCESS_FINE_LOCATION},44);
}
}
事实是,当我在 android studio 模拟器上时,它在大多数情况下工作正常。
但是当我 运行 我的 phone 上的应用程序时,我得到了我设置的“位置空错误”提示。 意思是位置为空。即使在设备设置中打开位置。
我不知道是什么问题。
在您的情况下,您想在 locationupdates 方法中使用地理编码器。一旦位置不为空,请使用该位置查找您的地址,然后停止更新。
为此,您需要使用 requestLocationUpdates,因为如果其他应用程序在特定时间内未请求该位置,lastKnownlocation 可能为 null。
看看这个问题中的