2016-10-23 3 views
0

Ich arbeite an einer App, die alle Benutzerereignisse und Kalender an die App sendet. Aber ich möchte unterscheiden zwischen einem vom Benutzer erstellten ganztägigen Ereignis und einem, das automatisch dem Kalender wie einem Geburtstag oder einem Feiertag hinzugefügt wurde.Wie kann ich zwischen Feiertagen und Geburtstagen und von Benutzern erstellten ganztägigen Ereignissen unterscheiden?

ich all die verschiedenen Kalendern wie folgt aus:

cursor = contentResolver.query(Uri.parse("content://com.android.calendar/calendars"), 
      (new String[]{Calendars._ID, Calendars.CALENDAR_DISPLAY_NAME, Calendars.CALENDAR_ACCESS_LEVEL}), null, null, null); 

und die Ereignisse wie folgt aus:

Cursor eventCursor = contentResolver.query(builder.build(), 
       new String[]{"title", "begin", "end", "allDay"}, "(" + Events.CALENDAR_ID + " = ?)", 
       new String[]{String.valueOf(userCalendar.id)}, "startDay ASC, startMinute ASC"); 

Zusätzlich kann mir bitte jemand auf der Liste der verfügbaren Google Kalender direkt und Event Felder? ich aus irgendeinem Grund nicht sie überall ...

Dank

+0

, wenn u es gelöst, gibt ur Antwort hier –

+0

hatte nie die Chance, es zurück zu bekommen ... ich schon unten, um eine halbe Antwort geschrieben. besser als nichts ... –

+0

ich eigentlich habe ich eine Arbeit gefunden, nicht so effektiv, aber ich werde es als eine Antwort teilen. für andere –

Antwort

0

gut für jetzt direkt

if (userCalendar.accessLevel != Calendars.CAL_ACCESS_READ) 
0

Sie kann nicht, ich bin gerade Ausfiltern nach der Zugriffsebene unterscheiden finden konnten, die Ereignisse wie Geburtstage, Feiertage oder vom Benutzer erstellte Ereignisse. Aber ich habe einen Workaround, es ist für meine App LinkedOut Welche Kontakte basierend auf den Ereignissen organisieren. Also ich möchte nur die tatsächlichen Ereignisse nicht Geburtstage.

So habe ich nur die Ereignisse, die Standorte haben, weil die Art der Ereignisse, was ich will Standorte haben.

Wenn Sie nur Geburtstage möchten, filtern Sie die Ereignisse, die "Geburtstag" im Ereignisnamen enthalten, alle anderen Ereignisse, die keinen Standort haben und nicht "Geburtstag" in ihrem Namen haben wird Ferien.

Ich weiß, dass es möglicherweise nicht immer richtig ist, aber es wird für jetzt funktionieren.

-Code für das Erhalten Ereignisse, die Lage hat,

public void getDataFromEventTable() { 
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED) { 
     ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CALENDAR}, 121); 
    } 
    Cursor cur = null; 
    ContentResolver cr = getContentResolver(); 

    String[] mProjection = 
      { 
        "_id", 
        CalendarContract.Events.TITLE, 
        CalendarContract.Events.EVENT_LOCATION, 
        CalendarContract.Events.DTSTART, 
        CalendarContract.Events.DTEND, 
      }; 

    Uri uri = CalendarContract.Events.CONTENT_URI; 

    cur = cr.query(uri, mProjection, null, null, null); 

    while (cur.moveToNext()) { 

     String title = cur.getString(cur.getColumnIndex(CalendarContract.Events.TITLE)); 
     String loc = cur.getString(cur.getColumnIndex(CalendarContract.Events.EVENT_LOCATION)); 
     if(loc.length()>0) 
      Log.e("event",title+" "+loc); 
    } 

} 
Verwandte Themen