Android(安卓)8.0无法调用Geocoder 中的getFromLocation()解决办法
16lz
2021-01-24
第一步:用一个工具类存放getAddress()方法/** * 根据经纬度获取地理位置 * * @param context 上下文 * * @param latitude 纬度 * @param longitude 经度 * @return {@link Address} */public static Address getAddress(Context context, double latitude, double longitude) { Geocoder geocoder = new Geocoder(context, Locale.getDefault()); try { List addresses = geocoder.getFromLocation(latitude, longitude, 1); if (addresses.size() > 0) return addresses.get(0); } catch (IOException e) { e.printStackTrace(); } return null;}
第二步:开一个线程去调起getAddress()方法(关键)
new Thread() { @Override public void run() { //需要在子线程中处理的逻辑 if (location != null) { Address tempAddress = LocationUtil.getAddress(context,location.getLatitude(),location.getLongitude()); } }}.start();
第三步:从子线程中拿出解析后的地址
(在调用前先准备好)
public void getAdress(final LatLon latLon){ if (latLon != null){ new Thread() { @Override public void run() { //设置地理地址 Address address = LocationUtil.getAddress(DCTableActivity.this, latLon.getLat(), latLon.getLon()); if (address != null) { String locationAddr = address.getAddressLine(0).replace("Unnamed Road", ""); SharedPreferences.Editor editor = getCacheEdit(); editor.putString(GEOGRAPHICAL_POSITION,locationAddr); editor.commit(); } } }.start(); }}
更多相关文章
- SQLite数据库并发访问
- Android面试题总结(七)原理篇
- Android(安卓)计算两个地理坐标之间的距离
- Android基于Handler实现倒计时
- 【Android(安卓)Socket专题】:UDP通信客户端app的demo的实现
- Eclipse+android 开发配置步骤
- Android中利用画图类和线程画出闪烁的心形
- 【Android】开源项目汇总
- Android(安卓)ANR 探索