我正在尝试创建一个社交应用程序,允许用户发布获取其位置的内容,并仅向最近的用户显示该内容。然而,在获取用户的经度和纬度时,我得到了npe错误。我不知道我的代码到底出了什么问题。以下是错误:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference
at com.jstechnologies.helpinghands.utils.AddressUtils.getAddressFromGps(AddressUtils.java:44)
at com.jstechnologies.helpinghands.ui.MyApp.getAddress(MyApp.java:30)
at com.jstechnologies.helpinghands.ui.views.dashBoard.DashBoardViewModel.fetchAddress(DashBoardViewModel.java:65)
at com.jstechnologies.helpinghands.ui.views.dashBoard.DashBoardActivity.onCreate(DashBoardActivity.java:64)
at android.app.Activity.performCreate(Activity.java:7136)
at android.app.Activity.performCreate(Activity.java:7127)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
这是我的addressutils.java文件
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Criteria;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationManager;
import androidx.core.app.ActivityCompat;
import androidx.fragment.app.Fragment;
import pub.devrel.easypermissions.AfterPermissionGranted;
import pub.devrel.easypermissions.EasyPermissions;
public class AddressUtils {
private static final int RC_LOCATION_PERMISSION = 102;
@AfterPermissionGranted(RC_LOCATION_PERMISSION)
public Address getAddressFromGps(Context context) throws IOException {
String[] perms = {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION};
if (EasyPermissions.hasPermissions(context, perms)) {
String provider;
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
@SuppressLint("MissingPermission")
Location location = locationManager.getLastKnownLocation(provider);
Geocoder geocoder= new Geocoder(context, Locale.getDefault());
List<android.location.Address> addresses = geocoder.getFromLocation(location.getLatitude(),location.getLongitude(), 1);
Address address= new Address();
//ACCORDING TO LOGCAT THIS BELOW LINE HAS ERROR I GUESS
address.setLat(location.getLatitude());
address.setLon(location.getLongitude());
address.setCountry(addresses.get(0).getCountryName());
address.setCity(addresses.get(0).getLocality());
address.setState(addresses.get(0).getAdminArea());
address.setPincode(addresses.get(0).getPostalCode());
address.setAddressLine1(addresses.get(0).getAddressLine(0));
address.setAddressLine2(addresses.get(0).getAddressLine(1));
return address;
} else {
EasyPermissions.requestPermissions((Activity) context,"Location permissions are required",RC_LOCATION_PERMISSION,perms);
return null;
}
}
}
我想添加一些关于logcat在其他java文件上显示的错误的代码行图像(可能这不是必需的)。我需要在2天内完成这个项目,然而,我在这里结巴。请帮忙。
myapp.java
dashboardviewmodel.java
dashboardactivity.java
暂无答案!
目前还没有任何答案,快来回答吧!