¡Con ICS, ahora tenemos API para el Calendario! :)¿Cuál es la mejor manera de manejar actualizaciones cuando el calendario sincroniza nuevos eventos?
Mi pregunta es, ¿cómo determinamos si un evento ha sido actualizado. Idealmente, esto podría hacerse con un BroadcastReceiver, pero no creo que haya uno que sea públicamente accesible. Hay algún evento transmitido, pero no creo que sea accesible para aplicaciones que no sean del sistema.
02-06 23:05:05.316: I/CalendarProvider2(9201): Sending notification intent: Intent { act=android.intent.action.PROVIDER_CHANGED dat=content://com.android.calendar }
02-06 23:05:05.320: W/ContentResolver(9201): Failed to get type for: content://com.android.calendar (Unknown URL content://com.android.calendar)
Este es mi trabajo por el momento. ¿Hay una mejor manera? Los usuarios pueden obtener squimish si ven un servicio en funcionamiento durante mucho tiempo y, a menudo lo matará para ahorrar batería.
public class CalendarUpdatedService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
int returnValue = super.onStartCommand(intent, flags, startId);
getContentResolver().registerContentObserver(
CalendarContract.Events.CONTENT_URI, true, observer);
return returnValue;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
ContentObserver observer = new ContentObserver(new Handler()) {
@Override
public boolean deliverSelfNotifications() {
return true;
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
//code goes here to update
}
};
}
gran trabajo alrededor por ahora. – Adam
por alguna razón, cada vez que creo un evento en el calendario, me notifican varias veces. ¿por qué está sucediendo? –