Nexus 7上的活动失败,但在Nexus 4&五

时间:2014-02-20 03:57:54

标签: android android-activity location nexus-7

我有一个应用程序可以精确定位地图上的用户位置。这在我的Nexus 4& 5,但不再适用于我的Nexus 7.

它确实在7上运行,但随后设备在执行期间关机,现在应用程序将无法运行。

我已将设备重置为出厂设备,并已在其上运行所有更新。

以下是我的onCreate方法的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
    map.setMyLocationEnabled(true);
    Criteria criteria = new Criteria();
    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    String provider = locationManager.getBestProvider(criteria, false);
    Location location = locationManager.getLastKnownLocation(provider);
    double lat =  location.getLatitude();
    double lng = location.getLongitude();
    LatLng coordinate = new LatLng(lat, lng);
    CameraUpdate center = CameraUpdateFactory.newLatLng(coordinate);
    CameraUpdate zoom=CameraUpdateFactory.zoomTo(16);
    map.moveCamera(center);
    map.animateCamera(zoom);
}

它说我在** ** double lat = location.getLatitude();

获得了NullPointerException

我能理解一个问题,如果它会在我的所有设备上发生,但我无法解决为什么只有这一个设备(特别是在它之前工作之后)?

2 个答案:

答案 0 :(得分:2)

根据getLastKnownLocation documentation

  

如果当前禁用了提供程序,则返回null。

当您使用getBestProvider(criteria, false)时,您说您允许未启用的提供程序(false表示的意思) - 如果您只想查看已启用的提供程序,请将其切换为true (这将确保getLastKnownLocation不返回null)。

请注意,getLastKnownLocation可能已过期,如果您需要获取最近的位置,您可能仍希望查找位置更新。

答案 1 :(得分:0)

使用gsp或网络位置进行处理时,需要注意几点。

* - 数据需要一段时间才能到达您的设备:是的,重新启动设备的当前位置可能需要1分钟。这就是为什么你应该使用LocationListener

* - 可能听起来很疯狂,但要确认您的智能手机已连接到互联网