在Android 11中,位置更新的方式有所改变。以下是一个包含代码示例的解决方法:
public class MyActivity extends AppCompatActivity implements LocationListener {
private LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
requestLocationUpdates();
}
private void requestLocationUpdates() {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
return;
}
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}
@Override
public void onLocationChanged(Location location) {
// 处理位置更新
double latitude = location.getLatitude();
double longitude = location.getLongitude();
// 其他操作...
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
}
以上代码中,我们使用LocationManager的requestLocationUpdates方法来请求位置更新。需要注意的是,我们首先检查是否有位置权限,如果没有,则请求权限。在onLocationChanged方法中,你可以处理位置更新的逻辑。
并在应用运行时请求权限:
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
这样,你就可以在Android 11中获取位置更新了。请记得在使用这些代码之前,确保你已经在设备上启用了位置服务。
上一篇:Android 11中的位置访问