Android异步任务运行时异常

Android异步任务运行时异常,android,android-asynctask,runtimeexception,Android,Android Asynctask,Runtimeexception,执行AsyncTask的execute()方法时,我得到了以下RunTimeException。 我通过单击下面显示其侦听器的按钮来执行AsyncTask 这是一个错误日志 05-15 12:56:50.045: W/dalvikvm(25830): threadid=12: thread exiting with uncaught exception (group=0x415052a0) 05-15 12:56:50.070: E/AndroidRuntime(25830): FATAL EX

执行
AsyncTask的
execute()方法时,我得到了以下
RunTimeException
。 我通过单击下面显示其侦听器的按钮来执行
AsyncTask
这是一个错误日志

05-15 12:56:50.045: W/dalvikvm(25830): threadid=12: thread exiting with uncaught exception (group=0x415052a0)
05-15 12:56:50.070: E/AndroidRuntime(25830): FATAL EXCEPTION: AsyncTask #1
05-15 12:56:50.070: E/AndroidRuntime(25830): java.lang.RuntimeException: An error occured while executing doInBackground()
05-15 12:56:50.070: E/AndroidRuntime(25830):    at android.os.AsyncTask$3.done(AsyncTask.java:299)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at java.lang.Thread.run(Thread.java:856)
05-15 12:56:50.070: E/AndroidRuntime(25830): Caused by: java.lang.IllegalArgumentException: the name must not be empty: null
05-15 12:56:50.070: E/AndroidRuntime(25830):    at android.os.Parcel.readException(Parcel.java:1429)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at android.os.Parcel.readException(Parcel.java:1379)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at com.google.android.gms.internal.x$a$a.a(Unknown Source)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.getToken(GoogleAccountCredential.java:192)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:217)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:836)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:412)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:345)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:463)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at com.fooworks.foomanager.EventsActivity$1$1.doInBackground(EventsActivity.java:94)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at com.fooworks.foomanager.EventsActivity$1$1.doInBackground(EventsActivity.java:1)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-15 12:56:50.070: E/AndroidRuntime(25830):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
05-15 12:56:50.070: E/AndroidRuntime(25830):    ... 5 more
05-15 12:56:50.100: D/dalvikvm(25830): GC_CONCURRENT freed 331K, 7% free 12486K/13319K, paused 13ms+13ms, total 47ms
代码如下:

package com.fooworks.foomanager;

import java.io.IOException;
import java.util.Collections;
import java.util.List;

import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

import com.google.android.gms.auth.GoogleAuthException;
import com.google.android.gms.auth.GoogleAuthUtil;
import com.google.android.gms.auth.GooglePlayServicesAvailabilityException;
import com.google.android.gms.auth.UserRecoverableAuthException;
import com.google.api.client.extensions.android.http.AndroidHttp;
import com.google.api.client.googleapis.extensions.android.accounts.GoogleAccountManager;
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential;
import com.google.api.client.googleapis.extensions.android.gms.auth.GooglePlayServicesAvailabilityIOException;
import com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.calendar.CalendarScopes;
import com.google.api.services.calendar.model.CalendarList;

public class EventsActivity extends EntriesActivity {

  public static final String CLIENT_ID = "850381918262.apps.googleusercontent.com";

  public static final String API_KEY = "AIzaSyC7t5n2akn2HmDrcbbnkiMPGBhG9Hhuyqc";

  public static final String PREF_GOOGLEACCOUNT_NAME = "googleAccountName";

  public static final int REQUEST_ACCOUNT_PICKER = 8; // take care not to
  // overlap with requests
  // in superclass

  final HttpTransport transport = AndroidHttp.newCompatibleTransport();

  final JsonFactory jsonFactory = new GsonFactory();

  GoogleAccountCredential credential;

  com.google.api.services.calendar.Calendar calendarClient;

  void chooseGoogleAccount() {

    GoogleAccountManager googleAccountManager = new GoogleAccountManager(this);

    Account[] accounts = googleAccountManager.getAccounts();

  }

  private static final String SCOPE = "oauth2:https://www.googleapis.com/auth/userinfo.profile";
  //private static final String SCOPE = "oauth2:https://www.googleapis.com/auth/calendar";

  @Override
  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    System.out.println("HERE!!!");
    System.out.println(CalendarScopes.CALENDAR);

    credential = GoogleAccountCredential.usingOAuth2(this, CalendarScopes.CALENDAR);

    calendarClient = new com.google.api.services.calendar.Calendar.Builder(
      transport, jsonFactory, credential).setApplicationName("Client Event Manager/1.0")
      .build();

    Button testButton = (Button) findViewById(R.id.test);

    testButton.setOnClickListener(new OnClickListener() {

      @Override
      public void onClick(View v) {

        new AsyncTask<Void, Void, Void>() {

          @Override
          protected Void doInBackground(Void... params) {

            try {
               //THIS IS THE LINE CAUSING THE ERROR:
              CalendarList calendarList = calendarClient.calendarList().list().execute();
              System.out.println(calendarList.getItems());

            } catch (final GooglePlayServicesAvailabilityIOException availabilityException) {
              System.out.println("Hello Exception 0!");
              System.out.println(availabilityException.getConnectionStatusCode());
            } catch (UserRecoverableAuthIOException userRecoverableException) {
              System.out.println("Hello Exception !");
              EventsActivity.this.startActivityForResult(userRecoverableException.getIntent(), 99);
            } catch (IOException e) {
              System.out.println("Hello Exception 2!");
              e.printStackTrace();
            }

            return null;

          }

        }.execute();

      }

    });

  }
package com.fooworks.foomanager;
导入java.io.IOException;
导入java.util.Collections;
导入java.util.List;
导入android.accounts.Account;
导入android.accounts.AccountManager;
导入android.app.Activity;
导入android.content.Context;
导入android.content.Intent;
导入android.content.SharedReferences;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.widget.TextView;
导入com.google.android.gms.auth.GoogleAuthException;
导入com.google.android.gms.auth.GoogleAuthUtil;
导入com.google.android.gms.auth.GooglePlayServicesAvailabilityException;
导入com.google.android.gms.auth.UserRecoverableAuthException;
导入com.google.api.client.extensions.android.http.AndroidHttp;
导入com.google.api.client.googleapis.extensions.android.accounts.GoogleAccountManager;
导入com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential;
导入com.google.api.client.googleapis.extensions.android.gms.auth.GooglePlayServicesAvailabilityIOException;
导入com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException;
导入com.google.api.client.http.HttpTransport;
导入com.google.api.client.json.JsonFactory;
导入com.google.api.client.json.gson.GsonFactory;
导入com.google.api.services.calendar.CalendarScopes;
导入com.google.api.services.calendar.model.CalendarList;
公共类事件活动扩展了EntriesActivity{
公共静态最终字符串客户端\u ID=“850381918262.apps.googleusercontent.com”;
公共静态最终字符串API_KEY=“AIzaSyC7t5n2akn2HmDrcbbnkiMPGBhG9Hhuyqc”;
公共静态最终字符串PREF_GOOGLEACCOUNT_NAME=“googleAccountName”;
public static final int REQUEST\u ACCOUNT\u PICKER=8;//注意不要
//与请求重叠
//在超类中
final HttpTransport transport=AndroidHttp.newCompatibleTransport();
最终的JsonFactory JsonFactory=新的GsonFactory();
谷歌会计凭证;
com.google.api.services.calendar.calendar calendarClient;
void chooseGoogleAccount(){
GoogleAccountManager GoogleAccountManager=新的GoogleAccountManager(此);
Account[]accounts=googleAccountManager.getAccounts();
}
私有静态最终字符串SCOPE=“oauth2:https://www.googleapis.com/auth/userinfo.profile";
//私有静态最终字符串SCOPE=“oauth2:https://www.googleapis.com/auth/calendar";
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
System.out.println(“这里!!!”;
System.out.println(CalendarScopes.CALENDAR);
credential=GoogleAccountCredential.UsingAuth2(这是CalendarScopes.CALENDAR);
calendarClient=new com.google.api.services.calendar.calendar.Builder(
传输,jsonFactory,凭证).setApplicationName(“客户端事件管理器/1.0”)
.build();
按钮测试按钮=(按钮)findViewById(R.id.test);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
新建异步任务(){
@凌驾
受保护的Void doInBackground(Void…参数){
试一试{
//这是导致错误的行:
CalendarList CalendarList=calendarClient.CalendarList().list().execute();
System.out.println(calendarList.getItems());
}捕获(最终GooglePlayServicesAvailabilityIOException可用性异常){
System.out.println(“你好,异常0!”);
System.out.println(availabilityException.getConnectionStatusCode());
}捕获(UserRecoverableAuthIOException userRecoverableException){
System.out.println(“你好,异常!”);
EventsActivity.this.startActivityForResult(userRecoverableException.getIntent(),99);
}捕获(IOE异常){
System.out.println(“你好,异常2!”);
e、 printStackTrace();
}
返回null;
}
}.execute();
}
});
}
有人能解释一下是什么导致了这个错误以及如何修复它吗?

试试这个方法

    new AsyncTask<String, Void, String>() {
     @Override
              protected String doInBackground(Void... params) {
return null;

            }
 @Override
protected void onPostExecute(String result) {

    super.onPostExecute(result);
             }
}
newasynctask(){
@凌驾
受保护字符串doInBackground(无效…参数){
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
}
}

请发布行号94和周围代码…这是问题行。EventsActivity.java中的行号94是什么?哪一个是行号94?Posted EventsActivity.java只有84行源代码。这是有问题的行:CalendarList CalendarList=EventsActivity.This.calendarClient.CalendarList().list().setFields(“items(id,summary)”).execute();为什么这会有帮助?在这里,您只需从辅助线程返回null,并在主线程上调用super.onPostExecute(null)。???设置凭证。setSelectedAccountName(“myself@gmail.com");修复了错误,但我无法理解如果selectedAccountName为空,为什么会出现此异常。理想情况下,在后一种情况下,我会出现异常,告诉我没有选择的帐户???