尝试在Android上使用Google Tasks API会让我的应用崩溃

时间:2011-09-19 17:48:57

标签: java android google-api

我正在尝试使用Google Tasks API为Android构建一个简单的待办事项应用 但是,无论我尝试更改或包含什么,每当我尝试使用任务API时,我的应用程序都能正常编辑,但会在手机上崩溃。
所有的库都在我的libs文件夹中,但我无法理解我还需要包含哪些依赖项。 这是我当前的代码,一旦我删除了我的应用程序在电话打开后立即崩溃的任务行的注释 杰克的事情是用于测试JacksonFactory不是故障 问题可能是我调用了新的GoogleAccessProtectedResource(null),必须使用oAuth authkey调用它?

package de.purespider.tasks;

import android.app.Activity;
import android.os.Bundle;

import com.google.api.client.extensions.android2.AndroidHttp;
import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAccessProtectedResource;
import com.google.api.client.googleapis.extensions.android2.auth.GoogleAccountManager;
import com.google.api.client.http.HttpResponse;
import com.google.api.client.http.HttpResponseException;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.jackson.JacksonFactory;
import com.google.api.services.tasks.Tasks;
import com.google.api.services.tasks.model.Task;

import android.accounts.Account;
import android.accounts.AccountManager;
import android.accounts.AccountManagerCallback;
import android.accounts.AccountManagerFuture;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

public class TasksActivity extends Activity
{
    private static final String TAG = "TasksSample";

    // This must be the exact string, and is a special for alias OAuth 2 scope
    // "https://www.googleapis.com/auth/tasks"
    private static final String AUTH_TOKEN_TYPE = "Manage your tasks";

    private static final String PREF = "MyPrefs";
    private static final int DIALOG_ACCOUNTS = 0;
    private static final int MENU_ACCOUNTS = 0;
    public static final int REQUEST_AUTHENTICATE = 0;

    private final HttpTransport transport = AndroidHttp.newCompatibleTransport();

    Tasks service;
    GoogleAccessProtectedResource accessProtectedResource = new GoogleAccessProtectedResource(null);

    // TODO(yanivi): save auth token in preferences?
    GoogleAccountManager accountManager;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        JacksonFactory jack = new JacksonFactory();
        //service = new Tasks(transport, accessProtectedResource, new JacksonFactory());
        //service.setKey(/* my auth key goes here */);
        //service.setApplicationName("tasks");

        accountManager = new GoogleAccountManager(this);
    }
}

我正在使用netbeans(没有maven)并且没有手动修改我的AndroidManifest.xml。

编辑:
我通过项目的libs dir包含的库是:

  • 谷歌-API的客户端 - 1.4.1-beta.jar
  • 谷歌-API的客户端的扩展-1.4.1-beta.jar
  • 谷歌-API的客户端 - 扩展 - android2-1.4.1-beta.jar
  • 谷歌-API的客户端 - googleapis-1.4.1-beta.jar
  • 谷歌-API的客户端 - googleapis的扩展-1.4.1-beta.jar
  • 谷歌-API的客户端 - googleapis的扩展-android2-1.4.1-beta.jar
  • google-api-services-tasks-v1-1.2.0-beta.jar gson-1.6.jar
  • 番石榴r09.jar
  • 的HttpClient-4.0.3.jar
  • 杰克逊核-ASL-1.6.7.jar

感谢您提前提供任何帮助。

2 个答案:

答案 0 :(得分:3)

升级到Google客户端库1.5.0 beta修复了它,我的libs文件夹现在看起来像这样:

  • 谷歌-API的客户端 - 1.5.0-beta.jar
  • 谷歌-API的客户端的扩展-1.5.0-beta.jar
  • 谷歌-API的客户端 - 扩展 - android2-1.5.0-beta.jar
  • 谷歌-API服务任务-v1-1.2.0-beta.jar
  • 谷歌-HTTP-客户1.5.0-beta.jar
  • 谷歌-HTTP客户端的扩展-1.5.0-beta.jar
  • 谷歌-HTTP客户端的扩展-android2-1.5.0-beta.jar
  • 谷歌OAuth的客户1.5.0-beta.jar
  • 谷歌OAuth的客户端 - 扩展 - 1.5.0-beta.jar
  • 番石榴r09.jar
  • 杰克逊核-ASL-1.6.7.jar

我还要加上
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission> <uses-permission android:name="android.permission.USE_CREDENTIALS"></uses-permission>
到我的AndroidManifest.xml
希望能帮助那些有同样问题的人! 另请参阅http://code.google.com/p/buzz-java-client/issues/detail?id=18以供参考。

答案 1 :(得分:0)

我在1.4.1文件中遇到了同样的问题。我的情况的解决方案是: 右键单击我的项目,然后单击Build Path&gt; Configure Build Path,然后在Java Build Path下,选择所有jar文件,然后按OK按钮。

之后,我工作了。