2017-05-17 4 views
0

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

Antwort

0

Wie im Blog erwähnt - WearableCalendarContract vs. CalendarContract:

WearableCalendarContract gibt Ihnen nur AUTHORITY und CONTENT_URI, weil alle anderen Konstanten, die Sie von der ursprünglichen CalendarContract bekommen . Wir haben versucht, Änderungen in der Nutzung von CalendarContract so gering wie möglich zu halten.

Versuchen CalendarContract statt WearableCalendarContract verwenden, um Details zu erhalten außer der Behörde und Inhalt Uri (Der Inhalt: // Stil-URL für die Top-Level-tragbar Kalender Autorität.)

Hoffnung, das hilft.

+0

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 –

1

Ich bekam eine Antwort von dem Wear Team dazu:

Hallo Torkel! Danke für den klaren Fehlerbericht. Diese Änderung wurde kürzlich vorgenommen, um die Menge der Daten zu verringern, die zwischen den Geräten synchronisiert werden. Die Felder werden gegenüber der aktuellen Version von Wear Companion kopiert sind:

CalendarContract.Instances._ID 
CalendarContract.Instances.EVENT_ID 
CalendarContract.Instances.TITLE 
CalendarContract.Instances.BEGIN 
CalendarContract.Instances.END 
CalendarContract.Instances.ALL_DAY 
CalendarContract.Instances.DESCRIPTION 
CalendarContract.Instances.EVENT_LOCATION 
CalendarContract.Instances.EVENT_COLOR 
CalendarContract.Instances.CALENDAR_COLOR 
CalendarContract.Instances.OWNER_ACCOUNT 
CalendarContract.Instances.VISIBLE 
CalendarContract.Instances.CALENDAR_ID 
CalendarContract.Reminders.EVENT_ID 
CalendarContract.Reminders.MINUTES 
CalendarContract.Reminders.METHOD 
CalendarContract.Attendees.EVENT_ID 
CalendarContract.Attendees.ATTENDEE_EMAIL 
CalendarContract.Attendees.ATTENDEE_NAME 
CalendarContract.Attendees.ATTENDEE_STATUS 
CalendarContract.Attendees.ATTENDEE_RELATIONSHIP 

Es sollte möglich sein, die Daten, die Sie aus dieser Teilmenge müssen geschlossen werden, aber antworten, wenn dies nicht der Fall ist.

Ich werde sehen, ob wir diese Dokumentation erhalten können, welche Felder zu erwarten mehr explizit in unserer öffentlichen Dokumentation angegeben.

Link zum Thema: https://issuetracker.google.com/issues/38476499

Verwandte Themen