gpt4 book ai didi

java - Android编程中如何获取当前位置

转载 作者:行者123 更新时间:2023-12-02 11:21:34 26 4
gpt4 key购买 nike

在我的应用程序中,我想要获取用户当前位置,为此我编写了以下代码。
但在某些设备中不显示位置并显示null!

在我的应用程序中,我想要获取用户当前位置,为此我编写了以下代码。
但在某些设备中不显示位置并显示null!

我的 Java 代码:

void getLocation(Context context) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(mActivity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);

} else {
Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null) {
double latti = location.getLatitude();
double longi = location.getLongitude();
try {
addresses = geocoder.getFromLocation(latti, longi, 1);
addressesORG = geocoderORG.getFromLocation(latti, longi, 1);
cityName = addresses.get(0).getLocality();
cityNameORG = addressesORG.get(0).getLocality();
prefsUtils.setToShared(PrefsKeys.CITY_NAME.name(), cityName);
prefsUtils.setToShared(PrefsKeys.CITY_NAME_ORG.name(), cityNameORG);
showSimpleWeather();
} catch (IOException e) {
e.printStackTrace();
Log.e("locationClickedLog", "Err : " + e.getMessage());
}
} else {
}
}
} else {
Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
Log.e("locationClickedLog", "" + location);
if (location != null) {
double latti = location.getLatitude();
double longi = location.getLongitude();
try {
addresses = geocoder.getFromLocation(latti, longi, 1);
addressesORG = geocoderORG.getFromLocation(latti, longi, 1);
cityName = addresses.get(0).getLocality();
cityNameORG = addressesORG.get(0).getLocality();
prefsUtils.setToShared(PrefsKeys.CITY_NAME.name(), cityName);
prefsUtils.setToShared(PrefsKeys.CITY_NAME_ORG.name(), cityNameORG);
showSimpleWeather();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);

switch (requestCode) {
case REQUEST_LOCATION:
getLocation(mContext);
break;
}
}

list 权限:

<!-- Location -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

记录此内容时:Log.e("locationClickedLog", "" + location);显示 logCat 中的 null !

如何修复它?

最佳答案

网络位置提供商的名称。

This provider determines location based on availability of cell tower and WiFi access points. Results are retrieved by means of a network lookup.

其他情况尝试使用LocationManager.GPS_PROVIDER

查看此处https://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/

关于java - Android编程中如何获取当前位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49884523/

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