2013-05-15 3 views
1

Я получаю следующие RunTimeException при выполнении AsyncTask's execute(). Выполняю AsyncTask, нажав на кнопку, слушатель которой показан ниже этот журнал ошибок.Android AsyncTask RunTimeException

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(); 

     } 

    }); 

    } 

Может кто-то пожалуйста, пролить некоторый свет на то, что является причиной этой ошибки и как это исправить?

+1

Пожалуйста, пост номер строки 94 и окружающий код ... Это вопрос линия. – JosephGarrone

+0

Что находится на линии номер 94 в EventsActivity.java? –

+0

Какой номер линии 94? –

ответ

0

Попробуйте этот путь

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

      } 
@Override 
protected void onPostExecute(String result) { 

    super.onPostExecute(result); 
      } 
} 
+0

Зачем это помогло? Здесь вы просто возвращаете null из вторичного потока и вызываете super.onPostExecute (null) в основном потоке. ???? – johngoche9999

+0

Установка credential.setSelectedAccountName ("[email protected]"); исправляет ошибку, но я не могу понять, почему я получаю это исключение, если selectedAccountName равно null. – johngoche9999

+0

В идеале в последнем случае я получаю исключение, говорящее мне, что нет выбранной учетной записи ??? – johngoche9999

Смежные вопросы