java - Android 位置对象始终为空

标签 java android android-studio gps android-gps

我只是想编写一个返回纬度和经度的方法。我有一个带有按钮和两个文本字段的 Activity 。我使用的 java 类扩展了 AppCompatActivity 并实现了 LocationListener 当按下按钮时,将按下以下方法:

public void startGPS(View view)
{

        // Here is the code to handle permissions - you should not need to edit this.
        if ( Build.VERSION.SDK_INT >= 23 &&
                ContextCompat.checkSelfPermission( this, android.Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED &&
                ContextCompat.checkSelfPermission( this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[] { android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION }, TAKE_PHOTO_PERMISSION);
        }

        Location location = locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5000, 0, this);
}

后来我尝试在 onLocationChanged 方法中打印出我的位置,但它导致应用程序崩溃。我通过调试器运行它,发现该位置始终为 null

我尝试this solution但它不起作用。其他示例是在 onResume 中调用该函数,但我确实需要在 startGPS 方法中调用该函数。

此外,错误是否有可能仅与我的设备有关?我在 Nexus 7 上运行它,当我运行 Google map 时似乎没有任何问题。

最佳答案

如果在按下按钮后尝试返回 GPS 坐标,则很可能您尚未存储现有的 GPS 位置。您应该使用 requestLocationUpdates 而不是 getLastKnownLocation

locationManager.requestLocationUpdate(LocationManager.NETWORK_PROVIDER, 5000, 0, locationListener)

当您使用 requestLocationUpdate 时,它会自动为您调用 onLocationChanged,因此您无需在代码中调用它。

您可以用 LocationManager.NETWORK_PROVIDER 替换 LocationManager.GPS_PROVIDER,但只要您有 WiFi 连接,您就应该能够获取坐标。

关于java - Android 位置对象始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43035485/

相关文章:

Java,Spring 测试,如何配置通常在 web.xml 中定义的日志记录?

java - 如何处理10位拜耳数据(字节数组)

Android:实现 WhatsApp 文件选择器

java - android.view.InflateException : Binary XML file line #2:

安卓 : Color of fonts on preview window and real device are different

android - 滑动菜单ABS和Android Studio

java - 添加新节点时使用堆栈来存储trap节点。为什么我会收到 EmptyStackException?

javax.jms.JMSSecurityException : Unable to validate user: null

java - Android 上的 JNI,如何将 int 从 c 传递到 java

java - 重复打印输出