Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中解析google calendar v3提要_Android_Google Calendar Api - Fatal编程技术网

如何在android中解析google calendar v3提要

如何在android中解析google calendar v3提要,android,google-calendar-api,Android,Google Calendar Api,我有一个应用程序,可以读取一个公共谷歌日历提要,并在列表视图中填充此日历中的事件。问题是我使用这个url来获取提要 现在google calendar api v2似乎已经停止使用,这个url是无效的,并且抛出了一个禁止的错误403,所以当我尝试在我的应用程序中使用它时,它崩溃了 下面是我解析该url中xml的代码: public ArrayList<Agenda> parse() { ArrayList<Agenda> events = null; X

我有一个应用程序,可以读取一个公共谷歌日历提要,并在列表视图中填充此日历中的事件。问题是我使用这个url来获取提要

现在google calendar api v2似乎已经停止使用,这个url是无效的,并且抛出了一个禁止的错误403,所以当我尝试在我的应用程序中使用它时,它崩溃了

下面是我解析该url中xml的代码:

public ArrayList<Agenda> parse() {

    ArrayList<Agenda> events = null;
    XmlPullParser parser = Xml.newPullParser();
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");

    try
    {
        parser.setInput(this.getInputStream(), null);
        int parserEvent = parser.getEventType();
        Agenda event = null;

        while (parserEvent != XmlPullParser.END_DOCUMENT)
        {
            String etiqueta = null;

            switch (parserEvent)
            {
                case XmlPullParser.START_DOCUMENT:
                    events = new ArrayList<Agenda>();
                    break;

                case XmlPullParser.START_TAG:
                    etiqueta = parser.getName();

                    if (etiqueta.equals("entry"))
                    {
                        event = new Agenda();
                    }
                    else if (event != null)
                    {
                        if (etiqueta.equals("title")){
                            String titol = parser.nextText();
                            event.setTitol(titol);
                            Log.d("Titol Event", titol);
                        }
                        else if (etiqueta.equals("where")){
                            String lloc = parser.getAttributeValue(null, "valueString");
                            event.setLloc(lloc);
                        }
                        else if (etiqueta.equals("when")){
                            Date iniciEvent = null;
                            Date finalEvent = null;
                            String dataInici = (parser.getAttributeValue(null, "startTime"));
                            Log.d("DATA INICI", dataInici);
                            String dataFinal = (parser.getAttributeValue(null, "endTime"));
                            if(dataFinal == null){
                                break;
                            }
                            Log.d("DATA FINAL", dataFinal);
                            try {
                                iniciEvent = formatter.parse(dataInici);
                                event.setData(iniciEvent);
                                formatHoraCorrecta = true;
                                event.setAllDay(false);
                            } catch (ParseException e) {
                                // TODO Auto-generated catch block
                                Log.d("ERROR FORMAT DATA", e.toString());
                                formatHoraCorrecta = false;
                                event.setAllDay(true);
                            }

                            if(!formatHoraCorrecta){
                                dataInici = dataInici + "T00:00:00";
                                iniciEvent = formatter.parse(dataInici);
                                event.setData(iniciEvent);
                                dataFinal = dataFinal + "T00:00:00";
                                finalEvent = formatter.parse(dataFinal);
                                event.setDataFinal(finalEvent);
                            }else{
                                finalEvent = formatter.parse(dataFinal);
                                event.setDataFinal(finalEvent);
                            }

                        }else  if(etiqueta.equals("content")){
                            event.setDescripcio(parser.nextText());
                        }

                    }
                    break;

                case XmlPullParser.END_TAG:
                    etiqueta = parser.getName();

                    if (etiqueta.equals("entry") && event != null)
                    {
                        events.add(event);
                    }
                    break;
            }

            parserEvent = parser.next();
        }
    }catch (Exception ex){
        Log.d("Exception ex", ex.toString());
        throw new RuntimeException(ex);
    }
    return events;
}
我发现这个URL现在显示日历提要,但实际上显示信息的方式完全不同,所以代码不起作用


是否有一种方法可以解析google calendar v3提要中的信息,就像我以前做的那样,或者我必须使用其他方法?

在calendar v2中,此代码将在您收到的响应是xml格式时起作用

但是对于Calender v3,必须更改解析方法以匹配中指定的新响应

你也可以参考这个问题:


希望有帮助

多谢各位。最后,我可以根据本教程解决我的问题: