Avatar billede heinzdmx Nybegynder
15. november 2010 - 13:35 Der er 1 løsning

Android: Calender app vis af kalendere der er deaktiveret

Jeg er i gang med at lave mit eget kalenderprogram tilpasset til at vise til typen af begivenheder (skole skema)

Selve implementeringen af layout har jeg klaret. Men der er et problem.

Jeg tænkte først på at det smarteste var at vise data fra den indbyggede kalender. Men Google har ikke offenliggjort et api til at bruge den, så det hele er udokumenteret :S Har dog fundet følgende der har været til hjælp:

http://jimblackler.net/blog/?p=151&cpage=1

Jeg kan fint få vist den kalender jeg vil have. Og også sagtens events på en kalender der er synlig. MEN prøver jeg at gøre det på en kalender der er sat til ikke at blive vist i standard kalender app, bliver events ikke vist.

Hvis der ikke er nogen der har et forslag til det har jeg overvejet om jeg skulle bruge Google Calender API (dvs webbaseret) men det vil bare føre en masse problemer med at få lavet en database og vedligholde den.... Plus brugere nu bliver bekymret om hvad jeg skal bruge deres Google konto credentials.

Her lidt kode der virker (hvis calenderen er sat til at blive vist)

////////////////////////////////
Liste over alle kalendere på telefonen
////////////////////////////////
String[] projection = new String[] { "_id", "displayName" };

Uri calendarsURI = CalenderUri.getCalendersProvider();

final Cursor cursor = contentResolver.query(calendarsURI, projection,null, null, null);

while (cursor.moveToNext())
{
    /* getString(0)= _id (the index of the calendar), getString(1) = name (the displayname), getString(2) = isSelected (if the calender is selected as active) */

calendars.add(new Calenders(cursor.getString(1), cursor.getString(0)));
}

////////////////////////////////
Følgende giver en liste over alle begivenheder idag
////////////////////////////////

public CalenderEvent[] getEventsFromCalenderForToday(int calenderID)
{     // display all the events from the previous week to the end of next week.
Uri.Builder builder = CalenderUri.getEventsWhenProvider().buildUpon();

long now = new Date().getTime();
ContentUris.appendId(builder, now - (DateUtils.DAY_IN_MILLIS));
ContentUris.appendId(builder, now + (DateUtils.DAY_IN_MILLIS));

Cursor eventCursor = contentResolver.query(builder.build(),
                new String[] { "title", "dtstart", "dtend", "eventLocation", "description" }, "Calendars._id=" + calenderID, null,
                "startDay ASC, startMinute ASC");

List<CalenderEvent> events = new ArrayList<CalenderEvent>();

if (eventCursor == null) return events.toArray(new CalenderEvent[0]);

while (eventCursor.moveToNext())
{
final String title = eventCursor.getString(0);
final Date beginTime = new Date(eventCursor.getLong(1));
final Date endTime = new Date(eventCursor.getLong(2));
final String location = eventCursor.getString(3);
final String description = eventCursor.getString(4);

events.add(new CalenderEvent(title, location, description, getTimeString(beginTime, endTime)));
}
return events.toArray(new CalenderEvent[0]);
}

/////////////////////////////////


Nogen der har en ide til at vise begivenheder fra en kalender der er skjult (men ligger på telefonen), evt. hvordan man tvinger den til at opdatere en kalender der er skjult.


Eller

Nogen der har forslag til at lave noget der fungere med Google Calender API:
http://code.google.com/intl/da-DK/apis/calendar/

Evt. med hvordan en database der kan håndtere det, så det kan bruges uden at der er internetforbindelse?

På forhånd tak for hjælpen. Ps. der referes nogen steder til CalenderUri der er en klasse der indeholder Uri der kan bruges til at forbinde til den interne Calender Database, hvis i føler der er behov for dem siger i bare til
Avatar billede heinzdmx Nybegynder
13. februar 2011 - 13:33 #1
Lukker dette spørgsmål.

Efter at have prøvet at bruge Google Calender API så endte jeg med i stedet at hente den ICS der indeholdt begivenhederne selv og så bruge iCal4j til at parse det og så bruge det på den måde.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester