android - 无法找到位置应用程序崩溃

标签 android location

我正在尝试在一个小型 Android 应用程序中检测用户位置。

应用程序之前正在运行。

但是现在当我运行我的应用程序时它就崩溃了。

这是我的代码。

private void getUserLocation() {

    location_manager = (LocationManager) getSystemService(LOCATION_SERVICE);
    if (location_manager != null) {
        provider = location_manager.getBestProvider(criteria, true);
        location = location_manager.getLastKnownLocation(provider);
        location_manager.requestLocationUpdates(provider,
                Map.MIN_TIME_BW_UPDATES,
                Map.MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
        lat = location.getLatitude();
        lang = location.getLongitude();
    }
}

堆栈跟踪

E/AndroidRuntime(10925): FATAL EXCEPTION: main
E/AndroidRuntime(10925): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.project.kamani.nearby/com.project.kamani.nearby.Map}: java.lang.NullPointerException
E/AndroidRuntime(10925): Caused by: java.lang.NullPointerException
E/AndroidRuntime(10925):    at com.project.kamani.nearby.Map.getUserLocation(Map.java:185)
E/AndroidRuntime(10925):    at com.project.kamani.nearby.Map.onCreate(Map.java:75)

根据我的解释,这里说错误在我的代码的第 75 行。

从第 75 行来看,我只是调用了上面的函数 getUserLocation()

我无法理解为什么会抛出空指针异常。

最佳答案

我认为,问题可能是因为位置为空。在使用它之前验证它不为空。 (如此处的 location.getLatitude())。


试试下面的代码。

private void getUserLocation() {

location_manager = (LocationManager) getSystemService(LOCATION_SERVICE);
if (location_manager != null) {

   List<String > provider=location_manager .getAllProviders();
            Location location = null;
            for(int i=0;i<provider.size();i++){
                 location=location_manager .getLastKnownLocation(provider.get(i));
                 if(location!=null){
                          location_manager.requestLocationUpdates(provider.get(i),
                                                    Map.MIN_TIME_BW_UPDATES,
                                                    Map.MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                       break;
                      }
            }


if(location!=null){
    lat = location.getLatitude();
    lang = location.getLongitude();
}else{
  // here you can initialize manually if you wish
}
}
}

关于android - 无法找到位置应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18959689/

相关文章:

android - 将我的手机设置为静音模式

Android 应用程序构建替代方案

android - 找不到类 com.google.android.gms.location.LocationClient (android)

android - 在 Windows 和 Android 设备上写入和读取 NFC 标签

android - 让我们在 Android 上加密给出 java.security.cert.CertPathValidatorException : Trust anchor for certification path not found

Android:GoogleApiClient 尚未连接?

performance - 如何提高计算haversine公式的查询性能?

android - Android 中后台服务的位置跟踪问题

safari - top.location.replace 在 Safari/Chrome 中创建历史记录项

android - 通过 USB 反向绑定(bind)多个 Android 设备