按网上找的gps实例,程序定位成功,再加入将经纬度变成街道名称,开始运行正常,出外测试时进入电梯后才发现程序闪退,多方查找原因,原来是goole的将经纬度变成街道名称的部件在没有网络信号时返回空值,如果再按正常数列读出[0] [1]会出现空针,所以程序闪退。
原程序
Geocoder geocoder = new Geocoder(MainActivity.this, Locale.getDefault());
try {
// 获取经纬度对于的位置
// getFromLocation(纬度, 经度, 最多获取的位置数量)
List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
// 得到第一个经纬度位置解析信息
Address address = addresses.get(0);
// 获取到详细的当前位置
// Address里面还有很多方法你们可以自行实现去尝试。比如具体省的名称、市的名称...
String info = address.getAddressLine(0) + // 获取国家名称
address.getAddressLine(1) + // 获取省市县(区)
address.getAddressLine(2); // 获取镇号(地址名称)
// 赋值
//textView.setText(info);
} catch (IOException e) {
e.printStackTrace();