Cómo obtener la lista de eventos del calendario del dispositivo en el dispositivo android?
Quiero obtener el evento del calendario última sevendays en dispositivos Android? Soy principiante, así que dime paso a paso la solución para esto .. Sólo obtener y leer el calendario no actualizar y eliminar. ¿Alguien me ayuda? He utilizado el código de abajo!
public class Example { 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. final Cursor cursor = contentResolver.query(Uri.parse("content://calendar/calendars"), (new String[] { "_id", "displayName", "selected" }), null, null, null); // For a full list of available columns see http://tinyurl.com/yfbg76w HashSet<String> calendarIds = new HashSet<String>(); while (cursor.moveToNext()) { final String _id = cursor.getString(0); final String displayName = cursor.getString(1); final Boolean selected = !cursor.getString(2).equals("0"); Log.v("anim","Id: " + _id + " Display Name: " + displayName + " Selected: " + selected); calendarIds.add(_id); } // 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://calendar/instances/when").buildUpon(); long now = new Date().getTime(); ContentUris.appendId(builder, now - DateUtils.WEEK_IN_MILLIS); ContentUris.appendId(builder, now + DateUtils.WEEK_IN_MILLIS); Cursor eventCursor = contentResolver.query(builder.build(), new String[] { "title", "begin", "end", "allDay"}, "Calendars._id=" + id, null, "startDay ASC, startMinute ASC"); // For a full list of available columns see http://tinyurl.com/yfbg76w while (eventCursor.moveToNext()) { 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"); Log.v("anim","Title: " + title + " Begin: " + begin + " End: " + end + " All Day: " + allDay); } } } }
Tengo null-pointerException.
- Cómo puedo saber dónde en mi imagen he tocado si me he movido y cambiar el tamaño de mi imagen con pinch, arrastrar y zoom
- Custom android.app.Application no disparar evento onCreate
- ¿Detecta que el dispositivo está vibrando?
- En Android, ¿Se puede interceptar eventos clave a nivel mundial antes de que lleguen al niño?
- Android: ViewPager y HorizontalScrollVIew
- Android: ¿Por qué un clic largo también activa un clic normal?
- DatePicker.OnDateChangedListener llamado dos veces
- Insertar varios eventos en el calendario de Android
- Detectar cuando usable conectado / desconectado desde / hacia el teléfono Android
- Abrir y mostrar el evento del calendario en android
- ListView de Android ejecutando un evento en el elemento Liberación de clics largos
- Android: Cómo invocar programaticamente evento onScroll en ListView
- El uso de una intención para editar el evento del calendario no funciona
Mi problema resuelto y uso code
abajo –
public class Utility { public static ArrayList<String> nameOfEvent = new ArrayList<String>(); public static ArrayList<String> startDates = new ArrayList<String>(); public static ArrayList<String> endDates = new ArrayList<String>(); public static ArrayList<String> descriptions = new ArrayList<String>(); 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; } public static String getDate(long milliSeconds) { SimpleDateFormat formatter = new SimpleDateFormat( "dd/MM/yyyy hh:mm:ss a"); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(milliSeconds); return formatter.format(calendar.getTime()); }
¡Muchas gracias! Sin embargo, obtuvo todos los eventos de un único calendario, como su cuenta principal de Google, ¿cómo puede obtener eventos de todos los calendarios disponibles?
Tenga en cuenta que en su Widget de calendario incorporado, puede ver eventos de Gmail, Exchange, Facebook, etc '¿Cómo obtener estos eventos también?
En cuanto a eventos particulares para la fecha o la semana, hice esto usando la cláusula de selección y la selección Args en la declaración de la consulta como esto para un día en particular:
Éstas son la selección y args definen:
Uri content = Uri.parse("content://com.android.calendar/events"); String[] vec = new String[] { "calendar_id", "title", "description", "dtstart", "dtend", "allDay", "eventLocation" }; String selectionClause = "(dtstart >= ? AND dtend <= ?) OR (dtstart >= ? AND allDay = ?)"; String[] selectionsArgs = new String[]{"" + dtstart, "" + dtend, "" + dtstart, "1"};
Y así se ve la consulta:
ContentResolver contentResolver = context.getContentResolver(); Cursor cursor = contentResolver.query(content, vec, selectionClause, selectionsArgs, null);
- EventBus – La clase Subscriber y sus superclases no tienen métodos públicos con la anotación @subscribe
- ¿Cómo ver las opciones reales de gcc al construir Android desde el origen?