GeoCoder服务不可用

时间:2013-08-15 08:40:09

标签: android geocoding google-play-services android-location google-geocoder

GeoCoder服务不可用

我正在使用GeoCoder获取AddressLocation。 不幸的是,该方法会触发IOException saying: "Service not Available"

This StackOverFlow thread解释了发生了什么,因为我对其进行了全面测试(用户权限,构建版本,重启,GeoCoding API限制等)。

您可以找到的Google Play-Services(或LocationService):Android设置 - > (管理)应用程序 - >运行进程,已崩溃或停止。它重新启动,但忘记将GeoCoderService绑定到NetworkLocator。

此错误的“解决方案”是重新启动Android手机,因为在重新启动时,GeoCoderService绑定到NetworkLocater。 我当然不认为这是一个解决方案。

问题

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

我所做的是手动强制停止Google Play服务,一些设备重新启动了LocationService,但有些设备没有。

不工作(未重启LocationService)

  • 4.0.3三星Galaxy Note(GT-N7000)
  • 4.0.4 Samsung Tablet 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 Galaxy Nexus

有人知道Google Play服务(LocationService)在运行一段时间后崩溃或停止的原因是什么?

我已将此问题上报给b.Android.com并亲自与Android开发人员联系。

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

6 个答案:

答案 0 :(得分:3)

再次重启设备检查(我遇到同样的问题。)

答案 1 :(得分: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();
                        }
                }
        });        
}

答案 2 :(得分:1)

您可以将Samsung Galaxy S II与Android 4.1.2一起添加到 NOT WORKING 列表中。这是一个烦人的错误,解决方法是以直接方式访问GMaps API。从我的角度来看,当用户使用内置任务管理器杀死所有应用程序以释放资源/内存时,就会发生这种情况。

答案 3 :(得分:0)

尝试在Manege Apps上重新启动“网络位置”服务。

答案 4 :(得分:0)

我遇到了同样的错误,请添加以下权限来解决它。

<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
<uses-permission android:name="android.permission.INTERNET" />

答案 5 :(得分:0)

您可以使用Google Maps Services