如何在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中将当前位置作为纬度和经度?的主要内容,如果未能解决你的问题,请参考以下文章