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的主要内容,如果未能解决你的问题,请参考以下文章

ORM框架PetaPoco API

hdfs常用api(java)

19.3.5 [LeetCode 103] Binary Tree Zigzag Level Order Traversal

检测 NUL 文件描述符(isatty 是假的)

删除“NUL”字符

NUL 与 NULL