#android
#Android
Вопрос:
Я хочу получать обновления событий календаря (при добавлении нового события или удалении существующего события) на устройствах Android 2.2? я новичок, поэтому расскажите мне пошаговое решение для этого..
Ответ №1:
Этот код может вам помочь 🙂
public class myCalendar
{
static Cursor cursor;
public static void readCalendar(Context context) {
ContentResolver contentResolver = context.getContentResolver();
// Fetch a list of all calendars synced with the device, their display names and whether the
// user has them selected for display.
cursor = contentResolver.query(Uri.parse("content://com.android.calendar/calendars"),
(new String[] { "_id", "displayName", "selected"}), null, null, null);
HashSet<String> calendarIds = new HashSet<String>();
try
{
System.out.println("Count=" cursor.getCount());
if(cursor.getCount() > 0)
{
System.out.println("the control is just inside of the cursor.count loop");
while (cursor.moveToNext()) {
String _id = cursor.getString(0);
String displayName = cursor.getString(1);
Boolean selected = !cursor.getString(2).equals("0");
System.out.println("Id: " _id " Display Name: " displayName " Selected: " selected);
calendarIds.add(_id);
}
}
}
catch(AssertionError ex)
{
ex.printStackTrace();
}
catch(Exception e)
{
e.printStackTrace();
}
// For each calendar, display all the events from the previous week to the end of next week.
for (String id : calendarIds) {
Uri.Builder builder = Uri.parse("content://com.android.calendar/instances/when").buildUpon();
//Uri.Builder builder = Uri.parse("content://com.android.calendar/calendars").buildUpon();
long now = new Date().getTime();
ContentUris.appendId(builder, now - DateUtils.DAY_IN_MILLIS * 10000);
ContentUris.appendId(builder, now DateUtils.DAY_IN_MILLIS * 10000);
Cursor eventCursor = contentResolver.query(builder.build(),
new String[] { "title", "begin", "end", "allDay"}, "Calendars._id=" 1,
null, "startDay ASC, startMinute ASC");
System.out.println("eventCursor count=" eventCursor.getCount());
if(eventCursor.getCount()>0)
{
eventCursor.moveToFirst();
while (eventCursor.moveToNext())
{
Object beg_date,beg_time,end_date,end_time;
final String title = eventCursor.getString(0);
final Date begin = new Date(eventCursor.getLong(1));
final Date end = new Date(eventCursor.getLong(2));
final Boolean allDay = !eventCursor.getString(3).equals("0");
/* System.out.println("Title: " title " Begin: " begin " End: " end
" All Day: " allDay);
*/
System.out.println("Title:" title);
System.out.println("Begin:" begin);
System.out.println("End:" end);
System.out.println("All Day:" allDay);
System.out.println("only date begin of events=" begin.getDate());
System.out.println("only begin time of events=" begin.getHours() ":" begin.getMinutes() ":" begin.getSeconds());
System.out.println("only date begin of events=" end.getDate());
System.out.println("only begin time of events=" end.getHours() ":" end.getMinutes() ":" end.getSeconds());
beg_date = begin.getDate();
beg_time = begin.getHours() ":" begin.getMinutes();
end_date = end.getDate();
end_time = end.getHours() ":" end.getMinutes();
}
}
break;
}
}
}
Комментарии:
1. используя этот код, я могу узнать, какое событие обновляется и удаляется с устройства Android..
2. Вы можете внести в него дополнительные изменения .. в настоящее время он просто извлекает события из календаря Google 🙂
3. это не поддерживает Android jelly bean, пожалуйста, дайте мне строку руководства или имя uri содержимого.