gpt4 book ai didi

java - location 第一次启动时返回 null

转载 作者:行者123 更新时间:2023-11-29 02:26:28 25 4
gpt4 key购买 nike

对于我的应用程序,我需要获取用户的位置,以便从服务器获取相应的数据。问题是我使用的代码在第一次打开时没有正确返回位置。重新启动应用程序后,它工作正常。我搜索了其他问题并发现,如果您使用 getLastKnownLocation 并且自上次重新启动后没有位置,它返回 null。但是为什么当应用程序重新启动时它可以工作?它是否在第一次打开时获取它,我如何让它等到第一次打开时正确获取位置?

我的 MainActivity 的代码:

if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {

requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 123);
} else {
progressBar.setVisibility(View.VISIBLE);
GPSClass gt = new GPSClass(getActivity().getApplicationContext());
Location location = gt.getLocation();

if (location == null) {
//Toast
} else {
lat = location.getLatitude();
lon = location.getLongitude();
}
new GetContacts().execute();
}

还有 GPS 类:

public class GPSClass implements LocationListener {

Context context;

public GPSClass(Context context) {
super();
this.context = context;
}

public Location getLocation(){
if (ContextCompat.checkSelfPermission( context, android.Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED) {
Log.e("fist","error");
return null;
}
try {
LocationManager lm = (LocationManager) context.getSystemService(LOCATION_SERVICE);
boolean isGPSEnabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (isGPSEnabled){
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000,10,this);
Location loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
return loc;
}else{
Log.e("sec","error");
}
}catch (Exception e){
e.printStackTrace();
}
return null;
}

最佳答案

Here is the full tutorial

我分享了一个教程链接,点击该链接。

调用下面的方法。它将返回值;找到纬度和经度时。在对象为空或不返回任何值之前,您的应用必须处于空闲状态或显示一些进度值或告诉用户等待。

InitGeoLocationUpdate.locationInit(SplashScreen.this,
object -> {
double latitude = object.latitude;
double longitude = object.longitude;
Lg.INSTANCE.d(TAG, "Current Location Latitude: " + latitude + " Longitude: " +
longitude);
});

关于java - location 第一次启动时返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51916128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com