2012-04-12 26 views
0

我使用Android 2.3.3和Google API开发Map应用程序。java.lang.IllegalAccessError:试图访问com.google.api.client.googleapis.GoogleHeaders.userAgent字段

问题出在下面的代码:

GoogleHeaders headers = new GoogleHeaders(); 
headers.setApplicationName("My Sample Google App on Maps"); 
request.setHeaders(headers); 

它拍摄与下面的错误,

E/AndroidRuntime(382): FATAL EXCEPTION: main 
E/AndroidRuntime(382): java.lang.IllegalAccessError: tried to access field com.google.api.client.googleapis.GoogleHeaders.userAgent from class com.google.api.client.googleapis.GoogleHeaders 
E/AndroidRuntime(382): at com.google.api.client.googleapis.GoogleHeaders.setApplicationName(GoogleHeaders.java:129) 
E/AndroidRuntime(382): at com.example.main.MapActivity$2.initialize(MapCallActivity.java:292) 
E/AndroidRuntime(382): at com.google.api.client.http.HttpRequestFactory.buildRequest(HttpRequestFactory.java:91) 
E/AndroidRuntime(382): at com.google.api.client.http.HttpRequestFactory.buildGetRequest(HttpRequestFactory.java:120) 
E/AndroidRuntime(382): at com.example.main.MapActivity.MyMethod(MapCallActivity.java:248) 
E/AndroidRuntime(382): at com.example.main.MapActivity.myMethod2(MapCallActivity.java:172) 
E/AndroidRuntime(382): at com.example.main.MapActivity.onCreate(MapCallActivity.java:108) 
E/AndroidRuntime(382): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
E/AndroidRuntime(382): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
E/AndroidRuntime(382): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
E/AndroidRuntime(382): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
E/AndroidRuntime(382): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
E/AndroidRuntime(382): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(382): at android.os.Looper.loop(Looper.java:130) 
E/AndroidRuntime(382): at android.app.ActivityThread.main(ActivityThread.java:3683) 
E/AndroidRuntime(382): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(382): at java.lang.reflect.Method.invoke(Method.java:507) 
E/AndroidRuntime(382): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
E/AndroidRuntime(382): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
E/AndroidRuntime(382): at dalvik.system.NativeStart.main(Native Method) 

请解释一下我,我被卡住,无法超越这一点。

使用的API:

google-api-client-googleapis-1.4.1-beta.jar 
google-http-client-1.8.3-beta.jar 
google-http-client-android2-1.8.3-beta.jar 
google-oauth-client-1.8.0-beta.jar 

帮助将不胜感激!

回答

0

我自己得到了解决方案。导致Googleapis-1.4.1-beta.jar导入问题的原因是由于内部的访问限制,编译器无法更改数据。这是在GoogleHeaders.java中创建问题。

它通过需要访问编译器的setApplicationName方法设置userAgent变量。但是,现在修改如下。

以下是GoogleHeaders的新代码。希望它有助于所有这些用户。

HttpHeaders headers = new HttpHeaders(); 
headers.setUserAgent("Searching Places.."); 
request.setHeaders(headers); 

request.addParser(new JsonHttpParser(new JacksonFactory())); 

全部删除GoogleHeaders的用法,它可以像刀子一样顺畅地运行。

干杯!

相关问题