Java Android-从Google日历输出事件列表

Java Android-从Google日历输出事件列表,java,android,calendar,Java,Android,Calendar,我想请你帮忙。现在我正在编写一个应用程序,它从谷歌日历中获取当前事件。但问题是,当我试图从多个日历输出事件时。我知道,我做错了什么,但真的,我不能插手这个问题 public class Main extends Activity { //TextView mInfo; TextView mEvents; @Override public void onCreate(Bundle savedInstanceState) {

我想请你帮忙。现在我正在编写一个应用程序,它从谷歌日历中获取当前事件。但问题是,当我试图从多个日历输出事件时。我知道,我做错了什么,但真的,我不能插手这个问题

public class Main extends Activity { //TextView mInfo; TextView mEvents; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //mInfo = (TextView)findViewById(R.id.info); mEvents = (TextView)findViewById(R.id.events); String[] calendarName = {"Calendar1", "Calendar2", "Calendar3", "Calendar4", "Calendar5"}; readCalendars(calendarName); } private void readCalendars(String[] calendarName) { String[] projection = new String[]{ CalendarContract.Calendars._ID, CalendarContract.Calendars.NAME, CalendarContract.Calendars.ACCOUNT_NAME, CalendarContract.Calendars.ACCOUNT_TYPE}; Cursor calCursor = getContentResolver(). query(CalendarContract.Calendars.CONTENT_URI, projection, CalendarContract.Calendars.VISIBLE + " = 1", null, CalendarContract.Calendars._ID + " ASC"); long calId = -1; //String calendarAccount = ""; for(int i = 0; i 0) { if(cursor.moveToFirst()) { do { long eventId = cursor.getLong(3); events += getEventInfo(eventId,cursor.getLong(1),cursor.getLong(2),cursor.getString(4),cursor.getString(5),cursor.getString(6)) + "\n"; } while(cursor.moveToNext()); } } mEvents.setText(events); } } @SuppressLint("SimpleDateFormat") private String getEventInfo(long eventId,long startTime, long endTime,String description, String location,String title) { String eventInfo = ""; { DateFormat df = new SimpleDateFormat("HH:mm"); String start = df.format( new Date(startTime)); String end = df.format( new Date(endTime)); eventInfo = start + "-" + end + " Class: "+ location + "\nLecture: " + title + "\nLecturer: " + description; } return eventInfo; } } 公共类主要扩展活动{ //TextView mInfo; 文本视图事件; @凌驾 创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); //mInfo=(TextView)findViewById(R.id.info); mEvents=(TextView)findViewById(R.id.events); 字符串[]calendarName={“Calendar1”、“Calendar2”、“Calendar3”、“Calendar4”、“Calendar5”}; 读取日历(日历名称); } 私有void读取日历(字符串[]日历名称) { 字符串[]投影= 新字符串[]{ 日历合同。日历。\u ID, CalendarContract.Calendars.NAME, CalendarContract.Calendars.ACCOUNT\u名称, CalendarContract.Calendars.ACCOUNT\u TYPE}; 光标计算器= getContentResolver()。 查询(CalendarContract.Calendars.CONTENT\u URI, 投影, CalendarContract.Calendars.VISIBLE+“=1”, 无效的 日历合同。日历。_ID+“ASC”); 长标度=-1; //字符串calendarAccount=“”; 对于(int i=0;i 0) { if(cursor.moveToFirst()) { 做 { long eventId=cursor.getLong(3); events+=getEventInfo(eventId,cursor.getLong(1),cursor.getLong(2),cursor.getString(4),cursor.getString(5),cursor.getString(6))+“\n”; }while(cursor.moveToNext()); } } mEvents.setText(事件); } } @SuppressLint(“SimpleDataFormat”) 私有字符串getEventInfo(长eventId、长startTime、长endTime、字符串描述、字符串位置、字符串标题) { 字符串eventInfo=“”; { DateFormat df=新的SimpleDataFormat(“HH:mm”); 字符串start=df.format(新日期(开始时间)); 字符串结束=df.format(新日期(结束时间)); eventInfo=start+“-”+end+”类:“+location+”\n体系结构:“+title+”\n体系结构:“+description; } 返回事件信息; } } 尝试使用循环输出所有事件,但没有帮助。如果我传入
calendarName[I]
,其中我是一个现有日历,我会得到日历的输出,这是我要求的,但这只是一个日历,例如,我需要输出5个日历

尝试使用ListView执行任何操作-再次失败


希望您能帮助解决此问题或帮助解决此问题。

CalendarContract.Calendars.CONTENT\u URI可用于检索日历,但不能检索这些日历的实际事件。拥有日历id后,必须使用以下URI之一获取事件信息:

  • CalendarContract.Events.CONTENT\u URI
  • CalendarContract.Instances.CONTENT\u URI