只申请了 ACCESS_COARSE_LOCATION 权限,如何获取到经纬度
时间: 2023-08-18 18:08:49 浏览: 138
如果您只申请了 `ACCESS_COARSE_LOCATION` 权限,那么您只能获得粗略位置信息,无法获得精确的经纬度信息。
要获取粗略位置信息,您可以使用 `LocationManager.NETWORK_PROVIDER` 作为位置提供程序来获取位置信息。示例代码如下:
```java
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// 没有权限,请求权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, REQUEST_CODE);
return;
}
Location location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
Log.d(TAG, "Latitude: " + latitude + ", Longitude: " + longitude);
}
```
请注意,由于使用的是网络位置提供程序,因此获取到的位置信息可能会有一定的误差。
如果您想要获得更精确的位置信息,需要申请 `ACCESS_FINE_LOCATION` 权限,并使用 `LocationManager.GPS_PROVIDER` 作为位置提供程序来获取位置信息。示例代码如下:
```java
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// 没有权限,请求权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_CODE);
return;
}
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
Log.d(TAG, "Latitude: " + latitude + ", Longitude: " + longitude);
}
```
请注意,使用 GPS 作为位置提供程序可以获得更精确的位置信息,但是在室内或者信号不好的区域可能会无法获取位置信息。
阅读全文