地理编码服务不可用。

14

GeoCoder服务不可用。

我正在使用GeoCoder获取AddressLocation,但是该方法触发了一个IOException说:“服务不可用”

这个StackOverFlow线程解释了发生了什么,因为我进行了全面的测试(用户权限、构建版本、重启、地理编码API限制等)。

你可以在Android设置->(管理)应用程序-->正在运行的进程中找到的Google Play-Services(或者LocationService)已经崩溃或停止。它会自行重启但忘记将GeoCoderService绑定到NetworkLocator。

修复此错误的“解决方案”是重新启动Android手机,因为在重新启动时GeoCoderService会绑定到NetworkLocater。

问题

我的问题是,LocationService如何首次崩溃或停止?

我手动强制停止Google Play服务,有些设备会重新启动LocationService,而有些则没有。

无法工作(没有重新启动LocationService)

  • 4.0.3三星Galaxy Note (GT-N7000)
  • 4.0.4三星平板GT-P7100
  • 4.1.2 Nexus S
  • 4.1.2三星Galaxy S III(GT-I9300)

可工作(重新启动LocationService)

  • 2.3.5 HTC Wildfired S
  • 4.0.3 Acer A500
  • 4.1.1三星Galaxy Note II(GT-7100)
  • 4.1.2三星Galaxy S II(GT-I9105P)
  • 4.2.2三星平板GT-P7500
  • 4.2.2 Nexus 7
  • 4.3 银河 Nexus
  • 有人知道Google Play服务(LocationService)在运行一段时间后为什么会崩溃或停止工作吗?

    我已经将此问题升级到b.Android.com并个人联系了Android开发人员。

    我看到我的问题已经在其他主题中讨论过,但没有得出任何结论:


    它对我有效,希望对你也有效。StackOverFlow链接 - Arhat Baid
    6个回答

    3
    重新启动设备,检查是否还有同样的问题(我曾经遇到过同样的问题)。

    2

    有些设备不支持Geocoder,因此您需要创建自己的地理编码器。

    基本上,您需要创建一个异步任务来请求Google地址并处理JSON响应。

    使用aquery,我会像这样做:

    public void asyncJson(String address){
            address = address.replace(" ", "+");
    
            String url = "http://maps.googleapis.com/maps/api/geocode/json?address="+ address +"&sensor=true";
    
            aq.ajax(url, JSONObject.class, new AjaxCallback<JSONObject>() {
    
                    @Override
                    public void callback(String url, JSONObject json, AjaxStatus status) {                        
    
                            if(json != null){
    
                                     //here you work with the response json
                                     JSONArray results = json.getJSONArray("results");                               
                                    Toast.makeText(context, results.getJSONObject(1).getString("formatted_address"));
    
                            }else{                                
                                    //ajax error, show error code
                                    Toast.makeText(aq.getContext(), "Error:" + status.getCode(), Toast.LENGTH_LONG).show();
                            }
                    }
            });        
    }
    

    1
    我遇到了相同的错误,添加以下权限以解决它。
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
    <uses-permission android:name="android.permission.INTERNET" />
    

    1
    你可以将安卓4.1.2版本的三星Galaxy S II添加到不工作列表中。这是一个非常烦人的错误,解决方法是以直接方式访问GMaps API。在我看来,当用户使用内置任务管理器关闭所有应用程序以释放资源/内存时,就会出现此问题。

    0

    您可以使用Google Maps Services

    Android SDK中的地理编码器是由设备制造商实现的,其中一些制造商不想费心去做这件事。

    更新:Google Maps服务不适用于Android,因此您可以使用Mapbox Geocoder


    0
    尝试在“管理应用程序”中重新启动“网络位置”服务。

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接