我刚开始使用Android进行应用开发。我想从Google日历中提取我的日历活动,然后使用它们在手机的时间内运行计数器。
如:如果事件在下午6点开始,到晚上7点结束:
然后如果电话时间< 6.00 pm然后打印“Time to event”+剩余时间直到事件
if phone time >6.00 pm but < 7.00 pm then print "Time left" + time till 7.00
有人能指出一些能让我这样做的资源吗?我主要使用Java进行开发,并希望利用一些简化此操作的可用库。谢谢!
答案 0 :(得分:1)
假设您只想要在一个时间跨度之间发生事件(否则您很快就会遇到太多事件),那么可以使用CalendarContract API的Instances帮助程序(请参阅我的博客文章)关于the CalendarContract content provider)。
以下是了解事件的方法:
long begin = // starting time in milliseconds
long end = // ending time in milliseconds
String[] proj =
new String[]{
Instances._ID,
Instances.BEGIN,
Instances.END,
Instances.EVENT_ID};
Cursor cursor =
Instances.query(getContentResolver(), proj, begin, end);
if (cursor.getCount() > 0) {
// do s.th. meaningful with your result set
}
这个助手的好处是,它负责事件的可见性。例如,删除/取消的事件在下次同步之前是可见的 - 否则Android无法告诉后端也删除该事件。你可以自己这样做,但是如果你想考虑一整天的活动,可见性和什么不是,它会变得复杂。始终使用Instances!
答案 1 :(得分:1)
public static ArrayList<String> readCalendarEvent(Context context) {
Cursor cursor = context.getContentResolver()
.query(
Uri.parse("content://com.android.calendar/events"),
new String[] { "calendar_id", "title", "description",
"dtstart", "dtend", "eventLocation" }, null,
null, null);
cursor.moveToFirst();
// fetching calendars name
String CNames[] = new String[cursor.getCount()];
// fetching calendars id
nameOfEvent.clear();
startDates.clear();
endDates.clear();
descriptions.clear();
for (int i = 0; i < CNames.length; i++) {
nameOfEvent.add(cursor.getString(1));
startDates.add(getDate(Long.parseLong(cursor.getString(3))));
endDates.add(getDate(Long.parseLong(cursor.getString(4))));
descriptions.add(cursor.getString(2));
CNames[i] = cursor.getString(1);
cursor.moveToNext();
}
return nameOfEvent;
}
答案 2 :(得分:0)
我相信这就是你想要的:
Cursor cursor = cr.query(Uri.parse("content://calendar/events"), new String[]{ "calendar_id", "title", "description", "dtstart", "dtend", "eventLocation" }, null, null, null);
//Cursor cursor = cr.query(Uri.parse("content://calendar/calendars"), new String[]{ "_id", "name" }, null, null, null);
String add = null;
cursor.moveToFirst();
String[] CalNames = new String[cursor.getCount()];
int[] CalIds = new int[cursor.getCount()];
for (int i = 0; i < CalNames.length; i++) {
CalIds[i] = cursor.getInt(0);
CalNames[i] = "Event"+cursor.getInt(0)+": \nTitle: "+ cursor.getString(1)+"\nDescription: "+cursor.getString(2)+"\nStart Date: "+new Date(cursor.getLong(3))+"\nEnd Date : "+new Date(cursor.getLong(4))+"\nLocation : "+cursor.getString(5);
if(add == null)
add = CalNames[i];
else{
add += CalNames[i];
}
((TextView)findViewById(R.id.calendars)).setText(add);
cursor.moveToNext();
}
cursor.close();
信用:@Vinay