1

各位开发者您好,

我是 Android 开发的新手,我正在尝试编写一个使用 Google Places Api 的应用程序。我在设置 Eclipse 并找出放置各种 jar 文件的位置方面进行了大量研究。(男孩本身就是一个项目)。好的,现在我的问题是我一直在关注 Davy 的技术博客 (http://ddewaele.blogspot.com/2011/05/introducing-google-places-api.html) 并且遇到了一些问题。

我已经下载了以下罐子: google-api-client-1.4.1.beta google-api-client-1.8.0.beta (withdependecies) google-collect-1.0-rc1

我已将这些添加到我的 libs 文件夹中

应用程序可以正确编译,但是当应用程序在 Android 模拟器上运行时,它会出现一条错误消息,指出“不幸的是,应用程序已停止”查看 Log Cat 我可以看到以下内容:

05-10 04:26:32.456: I/System.out(1408): 执行搜索.... 05-10 04:26:32.456: I/System.out(1408): -------- ----------- 05-10 04:26:32.486: I/dalvikvm(1408): 找不到方法 com.google.api.client.googleapis.GoogleHeaders.setUserAgent,引用自方法 com。 google.api.client.googleapis.GoogleHeaders.setApplicationName 05-10 04:26:32.486: W/dalvikvm(1408): VFY: 无法解析虚拟方法 279: Lcom/google/api/client/googleapis/GoogleHeaders;.setUserAgent (Ljava/lang/String;)V 05-10 04:26:32.486: D/dalvikvm(1408): VFY: 在 0x0000 处替换操作码 0x6e

该方法如下所示:

public static HttpRequestFactory createRequestFactory(final HttpTransport transport) { 
    return transport.createRequestFactory(new HttpRequestInitializer() {
        public void initialize(HttpRequest request) {
            GoogleHeaders headers = new GoogleHeaders();
            headers.setApplicationName("MyFirstLocationApp");
            request.headers=headers;
            JsonHttpParser parser = new JsonHttpParser();
            parser.jsonFactory = new JacksonFactory();
            request.addParser(parser);
        }
    });
}

我认为这与我包含的 Jar 文件有关。我相信 setApplicationName 位于 google-api-client-1.8.0.beta 中,而 setUserAgent 位于 google-api-client-1.4.1.beta 中(在 Http 类下)。

然而问题是我需要的大部分对象都没有在 google-api-client-1.8.0.beta 中找到,而是在 google-api-client-1.4.1.beta 中找到

这些是我的进口:

import com.google.api.client.googleapis.GoogleHeaders;
import com.google.api.client.http.GenericUrl;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpRequestFactory;
import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.client.http.HttpResponseException;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.http.json.JsonHttpParser;
import com.google.api.client.json.jackson.JacksonFactory;

任何帮助表示赞赏。这让我发疯了。

/伊姆兰

4

2 回答 2

4

所以我只包含了下面的 1.8.0 的东西,并且只包含了 API 的使用文档建议的 jars(只是将它们放入 lib 的文件夹中)使用 eclipse indigo,它只允许您将文件放入文件夹中(不是确定您使用的是哪个版本,但 indigo 比以前的版本更好地处理这些东西)

google-api-client-1.8.0-beta.jar
google-api-client-android2-1.8.0-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
gson-2.1.jar
guava-11.0.1.jar
jackson-core-asl-1.9.4.jar
jsr305-1.3.9.jar
protobuf-java-2.2.0.jar

然后为较新的 API 修改了一些代码

 public static HttpRequestFactory createRequestFactory(final HttpTransport transport) { 
        return transport.createRequestFactory(new HttpRequestInitializer() {
            public void initialize(HttpRequest request) {
                GoogleHeaders headers = new GoogleHeaders();
                headers.setApplicationName("MyFirstLocationApp");
                request.setHeaders(headers);
                JsonHttpParser parser = new JsonHttpParser(new JacksonFactory());
                request.addParser(parser);
            }
        });
    }

它可以编译并且对于一个简单的测试似乎可以正常工作,我建议您使用直接 1.8.0 尝试它,看看它是否有效。

于 2012-05-10T05:43:00.973 回答
1

如果您使用的是 android studio,请下载 google-api-client-1.5.0-beta.jar 文件并将其添加到您的项目 libs 文件夹中,右键单击 jar 文件并选择“添加为库”。确保你的 build.gradle 文件有这一行'compile files('libs/google-api-client-1.5.0-beta.jar')'。然后构建你的项目。

于 2015-07-27T09:57:22.433 回答