android - TelephonyManager.getCellLocation() 返回空值?

标签 android geolocation gps latitude-longitude

我处于一种情况,我必须通过 GSMCellLocation 获取位置,即经度和纬度,因此我正在尝试以下方式:

  ...
  TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
  location = (GsmCellLocation) tm.getCellLocation();
  cid = location.getCid();
  lac = location.getLac();
  ...

但应用程序崩溃并给我 NPE。我通过日志和调试检查了它,它显示 getCellLocation 返回 null 因此我无法获得 cidlac。 Google Docs 中此方法的签名是这样表述的:

Returns the current location of the device. Return null if current location is not available. 

现在我的问题是,如何在使用此方法之前获取当前位置,使其不为空。因为在我的情况下,我试图用它代替 GPSNetwork 来获取位置。请更新,如有任何帮助,我们将不胜感激。

最佳答案

添加此权限:ACCESS_COARSE_LOCATIONACCESS_FINE_LOCATION 在您的 manifest.xml

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

关于android - TelephonyManager.getCellLocation() 返回空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14577968/

相关文章:

python - 使用 Python 在手机中进行实时 gps 跟踪

java - 在 android 中实现旋转锁定

Android Studio 3.0.1 无法解决依赖错误

android - 创建新 Activity 最有效的方法是什么

javascript - 为什么 GeoLocation API javascript 代码无法在我的计算机上运行/加载

Android根据gps坐标在 Canvas 上画一个点

android - 使用 Android L 和 Camera2 API 处理相机预览图像数据

javascript - 对于没有 SSL 的网站,有 getCurrentPosition() 的免费替代品吗?

javascript - Android 上的手机唤醒后 HTML5 GPS 地理定位失败

android - 在我的应用程序中使用 GPS、Wi-Fi 时如何节省电量?