如何在Android中将当前位置作为纬度和经度?

Posted

技术标签:

【中文标题】如何在Android中将当前位置作为纬度和经度?【英文标题】:How can I get the current location as a latitude and longitude in Android? 【发布时间】:2019-08-25 14:47:42 【问题描述】:

我正在尝试使用模拟器返回当前位置的纬度和经度。我收到一个错误,我需要允许 ACCESS_FINE_LOCATION 即使这已经在我的清单文件中。有谁知道为什么下面的代码即使在我的清单文件中也无法使用?

提前致谢!

还有一个我尝试使用 fusedLocationClient 的版本,但我认为那没有任何作用,因为我的位置没有改变。

此代码的目标是以经度和纬度的形式将当前位置显示为 toast。

    public void displayCurrentLocation(View view)

        LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        double longitude = location.getLongitude();
        double latitude = location.getLatitude();
        Toast.makeText(getApplicationContext(),"Latitude:" + latitude + " Longitude:" + longitude,Toast.LENGTH_SHORT);

//        fusedLocationClient.getLastLocation()
//                .addOnSuccessListener(this, new OnSuccessListener<Location>() 
//                    @Override
//                    public void onSuccess(Location location) 
//                        double longitude = location.getLongitude();
//                        double latitude = location.getLatitude();
//                        Toast.makeText(getApplicationContext(),"Latitude:" + latitude + " Longitude:" + longitude,Toast.LENGTH_SHORT);
//                        if (location != null) 
//                            // Logic to handle location object
//                        
//                    
//                );

    

【问题讨论】:

也许你的清单做错了。看到这个答案:How to get Latitude and Longitude of the mobile device in android? 【参考方案1】:

如果您的应用需要危险权限,您必须在每次执行需要该权限的操作时检查您是否拥有该权限。从 Android 6.0(API 级别 23)开始,用户可以随时撤消任何应用的权限,即使该应用的目标 API 级别较低。

更多信息请参见Docs。

这意味着您应该在每次用户使用该功能时请求您的权限。

这是一个例子

if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) ==
    PackageManager.PERMISSION_GRANTED &&
    ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) ==
    PackageManager.PERMISSION_GRANTED) 
    //here you do your code for getting latLng

else 
  ActivityCompat.requestPermissions(this, new String[] 
  Manifest.permission.ACCESS_FINE_LOCATION, 
  Manifest.permission.ACCESS_COARSE_LOCATION , 
  TAG_CODE_PERMISSION_LOCATION);

【讨论】:

以上是关于如何在Android中将当前位置作为纬度和经度?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取当前位置并将纬度和经度作为字符串?

如何同时使用 GPS 和网络提供商在 Android 中获取当前位置的纬度和经度值

如何获取android移动设备的当前位置经纬度?

如何在Android应用程序中获取当前的经纬度? [复制]

在Android中查找当前位置的纬度和经度[重复]

如何在没有互联网连接的情况下在android中获取当前纬度和经度?