我会请你帮忙 . 现在我正在编写一个应用程序,它可以从Google日历中获取当前事件 . 但是,当我尝试从多个日历输出事件时,问题就在那里 . 我知道,我做错了什么,但真的,不能解决问题..
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;
}
}
试图用循环输出所有事件,但没有帮助 . 如果我传入 calendarName[i]
,其中我是现有日历之一,我得到日历的输出,我要求,但这只是一个日历,但是,例如,我需要输出5个日历 .
试图用ListView做任何事情 - 再次失败 .
希望,你会帮助解决这个问题,或者以某种方式帮助解决它 .
1 回答
CalendarContract.Calendars.CONTENT_URI可用于检索日历,但不能用于检索这些日历的实际事件 . 获得日历ID后,必须使用以下任一URI作为事件信息:
CalendarContract.Events.CONTENT_URI
CalendarContract.Instances.CONTENT_URI