LoactionManager Api19 NullPointerException
Posted
技术标签:
【中文标题】LoactionManager Api19 NullPointerException【英文标题】: 【发布时间】:2017-10-25 23:37:36 【问题描述】:也许有人可以告诉我为什么下面的代码适用于 25 以上的 Api,但在我现在正在测试的 Api 19 上我有 null 之后我尝试获取经度和纬度? 我已经阅读了官方docs,但是我使用的每种方法(目标 Api 25)都与 Api 19 兼容
Location loc = gpStracker.getlocation();
latitude = loc.getLatitude();
longitude = loc.getLongitude();
和 gpsTracker 类:
public class GPStracker implements LocationListener
Context context;
public GPStracker(Context c)
context = c;
public Location getlocation()
if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)
Toast.makeText(context, "Uprawnienia nie przyznane", Toast.LENGTH_SHORT).show();
LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
boolean isGPSenabled;
isGPSenabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (isGPSenabled)
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, this);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
return location;
else
Toast.makeText(context, "Proszę włączyć GPS", Toast.LENGTH_LONG).show();
return null;
@Override
public void onLocationChanged(Location location)
//Toast.makeText(context, String.valueOf(dis), Toast.LENGTH_SHORT).show();
@Override
public void onStatusChanged(String s, int i, Bundle bundle)
@Override
public void onProviderEnabled(String s)
@Override
public void onProviderDisabled(String s)
【问题讨论】:
你应该使用 Google 的 Fused Location Api 【参考方案1】:即使您调用了requestLocationUpdates
,函数getLastKnownLocation
也可能返回null
。另外,由于在您的 getLocation
函数中,您也可以返回 null,我建议您添加如下检查:
Location loc = gpStracker.getlocation();
if (loc != null)
latitude = loc.getLatitude();
longitude = loc.getLongitude();
【讨论】:
以上是关于LoactionManager Api19 NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章
19.3.5 [LeetCode 103] Binary Tree Zigzag Level Order Traversal