Застрял в исключении разбора календаря gdata в Android - PullRequest
0 голосов
/ 06 марта 2011

Я создаю виджет для доступа к событиям, хранящимся в календаре Google. Цель: Android 2.1

Я включил следующую внешнюю банку:

google-collect-1.0-rc1.jar jsr305.jar

GData-календарь-2.0.jar

GData-календарь-мета-2.0.jar,

GData-клиент-1.0.jar,

GData-клиент-мета-1.0.jar

GData-ядро-1.0.jar

Я получаю следующее исключение:

com.google.gdata.util.ParseException : org.xml.sax

вот мой код: HelloWidget.java

package de.thesmile.android.widget2;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.util.Log;
import android.widget.RemoteViews;
import com.google.gdata.client.calendar.*;
import com.google.gdata.data.*;
import de.thesmile.android.widget2.R;

public class HelloWidget extends AppWidgetProvider {
    int number =0;




public String gooleres()
{
    String result=new String("Unable to login into your account");
    // Create a CalenderService and authenticate
    try
    {
        URL feedUrl = new URL("https://www.google.com/calendar/feeds/default/private/full");

        CalendarQuery myQuery = new CalendarQuery(feedUrl);
        myQuery.setMinimumStartTime(DateTime.parseDateTime("2011-03-01T00:00:00"));
        myQuery.setMaximumStartTime(DateTime.parseDateTime("2011-03-06T23:59:59"));

        CalendarService myService = new CalendarService("wqewq");
        myService.setUserCredentials("sunnycool333@gmail.com", "XXXXXX");

         //Send the request and receive the response:
        Feed resultFeed = myService.query(myQuery, Feed.class);

        for (int i = 0; i < resultFeed.getEntries().size(); i++) {
          Entry entry = resultFeed.getEntries().get(i);
          result= entry.getTitle().getPlainText().toString();
    }

    }
        catch(Exception e)
    {

        result="Exception raised "+e.toString();
    }
        return result;

}



    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
            int[] appWidgetIds) {




        for (int appWidgetId : appWidgetIds) {


            RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.main);
            views.setTextViewText(R.id.widget_textview, gooleres());
            appWidgetManager.updateAppWidget(appWidgetId, views);

        }

    }


}

Код кажется правильным, потому что когда я пытаюсь поместить тот же код, что и простой файл Java, я получаю вывод .. простой Java-файл, который я создал, выглядит примерно так и дает правильный вывод ..

public static void main(String[] args) {
    // TODO Auto-generated method stub

    // Create a CalenderService and authenticate


    try
    {

    URL feedUrl = new URL("https://www.google.com/calendar/feeds/default/private/full");

    CalendarQuery myQuery = new CalendarQuery(feedUrl);
    myQuery.setMinimumStartTime(DateTime.parseDateTime("2011-03-01T00:00:00"));
    myQuery.setMaximumStartTime(DateTime.parseDateTime("2011-03-08T23:59:59"));

    CalendarService myService = new CalendarService("exampleCo-exampleApp-1");
    myService.setUserCredentials("sunnycool333@gmail.com", "ytrfvgb$");

    // Send the request and receive the response:
    Feed resultFeed = myService.query(myQuery, Feed.class);

    for (int i = 0; i < resultFeed.getEntries().size(); i++) {
      Entry entry = resultFeed.getEntries().get(i);

      System.out.println(Integer.toString(i)+entry.getTitle().getPlainText().toString());

    }
    }
    catch (Exception e) {
        // TODO: handle exception
        System.out.println(e.toString());
    }



}

1 Ответ

1 голос
/ 08 марта 2011

API gdata не поддерживается полностью Android.

, поэтому нужно перейти в клиентскую библиотеку Google Java: (

...