Ich habe ein Android Wear-Zifferblatt mit einer Funktion erstellt, die Kalenderereignisse mithilfe von WearableCalendarContract abruft. Ab einigen Tagen gibt es jetzt null Daten in Feldern über Start/Stop-Minuten und Start/Stopp-Tage und ich kann es nicht wieder arbeiten lassen.WearableCalendarContract gibt einige Nullfelder zurück
Der Code sieht wie folgt aus:
private final String[] PROJECTION = {
CalendarContract.Calendars._ID, // 0
CalendarContract.Instances.TITLE, // 1
CalendarContract.Instances.START_MINUTE,// 2
CalendarContract.Instances.END_MINUTE, // 3
CalendarContract.Instances.ALL_DAY, // 4
CalendarContract.Instances.START_DAY, // 5
CalendarContract.Instances.END_DAY, // 6
CalendarContract.Events.DISPLAY_COLOR, // 7
CalendarContract.Instances.DESCRIPTION, // 8debug
CalendarContract.Instances.DTSTART,
CalendarContract.Instances.DTEND,
CalendarContract.Instances.CALENDAR_TIME_ZONE,
CalendarContract.Instances.DURATION
};
private List<CalEvent> queryEvents() {
List<CalEvent> events = new ArrayList<>();
long begin = currentTimeMillis();
Log.d(TAG, "********** In queryEvents **********");
Uri.Builder builder = WearableCalendarContract.Instances.CONTENT_URI.buildUpon();
ContentUris.appendId(builder, begin);
ContentUris.appendId(builder, begin + DateUtils.DAY_IN_MILLIS/2); // 12 hours ahead
final Cursor cursor = getContentResolver()
.query(builder.build(),
PROJECTION,
null, // selection (all)
null, // selection args
null);
// get the start and end time, and the color
while (cursor != null && cursor.moveToNext()) {
String title = cursor.getString(1);
int startMinute = cursor.getInt(2);
int endMinute = cursor.getInt(3);
int allDay = cursor.getInt(4);
int startDay = cursor.getInt(5);
int endDay = cursor.getInt(6);
int color = cursor.getInt(7);
Log.d(TAG, "********** Title: " + title + ", start: " + startMinute + ", end: " + endMinute);
for (int i = 0; i < cursor.getColumnCount(); i++) {
Log.d(TAG, "********** cursor.isNull(" + i + ") = " + cursor.isNull(i));
}
events.add(new CalEvent(title, startMinute, endMinute, allDay, startDay, endDay, color));
}
cursor.close();
Log.d(TAG, "********** QueryEvents: Read " + events.size() + " events");
Collections.sort(events);
return events;
}
Ergebnis für das erste Ereignis (genau das gleiche Muster für Null-Felder für den Rest), warum die wichtige Zeit verwandten Bereichen alle null?
********** In queryEvents **********
********** Title: Test event, start: 0, end: 0
********** cursor.isNull(0) = false
********** cursor.isNull(1) = false
********** cursor.isNull(2) = true
********** cursor.isNull(3) = true
********** cursor.isNull(4) = false
********** cursor.isNull(5) = true
********** cursor.isNull(6) = true
********** cursor.isNull(7) = true
********** cursor.isNull(8) = false
********** cursor.isNull(9) = true
********** cursor.isNull(10) = true
********** cursor.isNull(11) = true
********** cursor.isNull(12) = true
In der Manifest-Datei habe ich <uses-permission android:name="android.permission.READ_CALENDAR" />
und es wird auch auf der Uhr gewährt. Diese Funktion hat seit 2 Monaten einwandfrei funktioniert und die aktuelle Version hat definitiv funktioniert, als ich sie am 6. Mai veröffentlicht habe. Ich vermute das neueste Android Wear Update vor 4 Tagen, aber da ich niemanden gefunden habe, der dieses Problem gemeldet hat, ist es wahrscheinlich meine eigene Schuld ... Sehr dankbar für jede Eingabe!
Danke Torkel
Danke, aber es funktioniert nicht, ich bekomme 0 Ereignisse, wenn ich CalendarContract statt WearableCalendarContract verwenden. Ich habe diesen Post gefunden, also bin ich anscheinend nicht der Einzige, der dieses Problem erlebt hat: https://plus.google.com/+DanWallach/posts/dYgqkgrZqMj –