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

问题描述 投票:1回答:1

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

提前致谢!

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

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

    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
//                        }
//                    }
//                });

    }
java android android-location
1个回答
0
投票

如果您的应用需要危险权限,则每次执行需要该权限的操作时,都必须检查是否拥有该权限。从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);

}

© www.soinside.com 2019 - 2024. All rights reserved.