为了账号安全,请及时绑定邮箱和手机立即绑定

错误在空对象引用上调用虚拟方法'double android.location.Location

错误在空对象引用上调用虚拟方法'double android.location.Location

凤凰求蛊 2019-12-03 16:15:40
我要尝试做的就是让用户获得他喜欢的类型的位置的列表。例如,如果输入是医院,我的应用程序将使用搜索字符串“ Hospital”打开google maps。但是,正如文档中所建议的那样,使用geo:0,0?q=hospitaluri等地理编码显示了所有坐标0纬度和0经度附近的医院。因此,当我尝试使用以下代码首先获取用户坐标时。问题在于,始终位置始终返回null。我知道一个事实,只要启用了位置,另一个应用程序Jarvis就可以轻松地完成任务,如果没有的话,仅仅是要求用户这样做。但是在相同条件下,我的应用程序总是崩溃。我做了什么:白天和黑夜都试图解决此问题。浏览了有关该主题的大量页面。尝试了自己的不同代码。而且它仍然会发生。我是Android的初学者。并且请帮我。有没有办法解决我的问题?甚至以为其他应用程序可以设法做到这一点。同时检查位置!= null需要ACCESS_FINE_LOCATION权限,该权限使我的应用程序混乱,导致其始终返回为null。
查看完整描述

3 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

这是执行此操作的另一种方法,您已经使用了保险丝定位概念,并且对我来说是成功的mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);


是声明融合的位置


 @SuppressWarnings( {"MissingPermission"})

private void enableLocationComponent() {

    System.out.println("on map click is here in permission///////////////");

    // Check if permissions are enabled and if not request

    if (PermissionsManager.areLocationPermissionsGranted(this)) {


        // Activate the MapboxMap LocationComponent to show user location

        // Adding in LocationComponentOptions is also an optional parameter

        LocationComponent locationComponent = mapboxMap.getLocationComponent();

        locationComponent.activateLocationComponent(this);

        locationComponent.setLocationComponentEnabled(true);

        // Set the component's camera mode

        locationComponent.setCameraMode(CameraMode.TRACKING);


        mFusedLocationClient.getLastLocation().addOnSuccessListener(this, new OnSuccessListener<Location>() {

                    @Override

                    public void onSuccess(Location location) {

                        originLocation=location;

                        // Got last known location. In some rare situations this can be null.

                        if (location != null) {

                            originLocation=location;

                            System.out.println(" permission granted location is in iff ++///////////////"+location);

                        }

                    }

                });


        //originLocation = locationComponent.getLastKnownLocation();

        System.out.println("origin location is that//////////"+originLocation);



    } else {



        permissionsManager = new PermissionsManager(this);

        permissionsManager.requestLocationPermissions(this);

    }

}


@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

    permissionsManager.onRequestPermissionsResult(requestCode, permissions, grantResults);

    Toast.makeText(this, "granted", Toast.LENGTH_LONG).show();

}


@Override

public void onExplanationNeeded(List<String> permissionsToExplain) {

    Toast.makeText(this, R.string.user_location_permission_explanation, Toast.LENGTH_LONG).show();

}


@Override

public void onPermissionResult(boolean granted) {

    if (granted) {

        enableLocationComponent();

    } else {

        Toast.makeText(this, R.string.user_location_permission_not_granted, Toast.LENGTH_LONG).show();``

        finish();

    }

}

查看完整回答
反对 回复 2019-12-03
  • 3 回答
  • 0 关注
  • 694 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信