Blöde lange Überschrift aber es trifft das Thema. Nun zuerst das Problem; Ich verwende in meinem Android Mobile 3 Kalender, einen Privaten, einen Geschäftlichen und einen Büro internen "public" Kalender. Soweit alles kein Problem, der meiner Mailbox zugewiesene Geschäftliche wird per Exchange synchronisiert, der Private ist ein Google Kalender aber der dritte steht nur auf einem iCal / Caldav Kalender Server zur Verfügung.

Erste Idee - Ne App für alles ?!

Nun es gibt im Android Market eine App die genau das machen soll was ich möchte, einen externen iCal mit meinem Telefon abgleichen. Leider ist diese App seit Veröffentlichung in der Beta und das letzte Update ist irgendwann aus 2010. Wie Murphy es auch so will läuft die App auf einem Galaxy S wunderbar aber auf meinem HTC Desire nicht - Blöd. Fehler bekannt aber entwickelt wird daran wohl nicht mehr.

Zweite Idee - iCal mit Google Kalender importieren

Nun da Android Telefon die Eigenschaft haben ohne Probleme mit beliebig vielen Google Kalendern zu synchronisieren dachte ich mir einfach den iCal vom Kalender Server in Google Kalender importieren und synchronisieren lassen. Tja... Da wäre nur ein Problem. Google Kalender akzeptiert nur offene iCals also Kalender die Public ohne Passwordschutz im Netz abrufbar sind - Fu. Lösung - Nun einfach ein kleines PHP Script gebastelt was mein Kalenderproblem löst. Das Script wird unter einer nicht zu erratenen URL online gestellt und im Google Kalender als Quell URL eingetragen. Würde dann z.b. so aussehen: http://meinedomain.de/meincalendarscript/djFfj3Djd-Djdsue-dJa94Dkf-sWsdfj.php Wenn nun Google auf die URL zugreift öffnet das PHP Script eine Verbindung zum besagten iCal Server mit Password und gibt die zurückgegebenen Termine aus. Resultat, ich habe nun auch den mit Authentifizierung geschützten iCal im Google Kalender und damit im Android.  *GRR* Hier das Script dazu:

header("Content-Type: text/calendar; charset=UTF-8");
header('Content-Disposition: filename=pub_calendar');
// create a new cURL resource
$curl= curl_init();

// set URL and other appropriate options
curl_setopt($curl, CURLOPT_URL, "https://my.awesome-ical-server.de/ical/public/Calendar");
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_USERPWD, 'username:password');
curl_setopt($curl, CURLOPT_ENCODING, 'gzip');
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC ) ;
curl_setopt($curl, CURLOPT_SSLVERSION, 3);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

// grab URL and pass it to the browser
curl_exec($curl);

// close cURL resource, and free up system resources
curl_close($curl);
Da dies simple PHP Script den Login im Klartext speichert würde ich empfehlen ein Extra iCal Konto zu erstellen was nur Zugriff auf diese Ressource hat. gl hf ^^

✉ MG//2011-02-15T16:40:00+00:00


Comments

<p>Ich hab dieses Script mehrere Monate problemlos verwendet.<br>Vor ein paar Wochen hab ich die URL angepasst und im Google-Kalender nochmal neu hinzugefügt und seitdem bekomm ich keine Termine mehr angezeigt.<br>Rufe ich das PHP-Script manuell auf, bekomme ich die korrekte Datei mit den aktuellen Terminen. Wie könnte man hier bei der Fehlersuche beginnen :S</p>
by guti
Ich hab dieses Script mehrere Monate problemlos verwendet.
Vor ein paar Wochen hab ich die URL angepasst und im Google-Kalender nochmal neu hinzugefügt und seitdem bekomm ich keine Termine mehr angezeigt.
Rufe ich das PHP-Script manuell auf, bekomme ich die korrekte Datei mit den aktuellen Terminen. Wie könnte man hier bei der Fehlersuche beginnen :S
by guti
<p>Vielen Dank für die prima Lösung. Bis gestern ging sie auch. Seit heute tauchen die Termine aber nicht mehr im Google Kalender auf. Ein direkter Aufruf des Skripts liefer aber eine Datei mit den richtigen, auch aktuellen Daten. Hat jemand eine Idee wie ich (als Laie) den Fehler finden kann?</p>
by Benutzer2
Vielen Dank für die prima Lösung. Bis gestern ging sie auch. Seit heute tauchen die Termine aber nicht mehr im Google Kalender auf. Ein direkter Aufruf des Skripts liefer aber eine Datei mit den richtigen, auch aktuellen Daten. Hat jemand eine Idee wie ich (als Laie) den Fehler finden kann?
by Benutzer2
<p>Hmm bei mir kann ich den importierten Kalender ohne Probleme umbenennen. Ist meistens ein Client Problem.</p>
by ★Marco Gö†ze
Hmm bei mir kann ich den importierten Kalender ohne Probleme umbenennen. Ist meistens ein Client Problem.
<p>Besten Dank für das hilfreiche Script. Was muss ich anpassen, damit als Kalendername nicht der Pfad zum File mit dem Script angezeigt wird, sondern der gewünschte Kalendername?</p>
by much
Besten Dank für das hilfreiche Script. Was muss ich anpassen, damit als Kalendername nicht der Pfad zum File mit dem Script angezeigt wird, sondern der gewünschte Kalendername?
by much
<p>habs... es lag am Serverzertifikat. Daher musste ich noch CURLOPT_SSL_VERIFYPEER = false hinzufügen. Jetzt funktionierts.</p>
by maybee
habs... es lag am Serverzertifikat. Daher musste ich noch CURLOPT_SSL_VERIFYPEER = false hinzufügen. Jetzt funktionierts.
by maybee


Follow Icon
Don’t miss out and subscribe by email:
Don't worry! NO Spam and FREE; Receive a summarizing email for new posts, easy to unsubscribe at any time.

← Other Blog Posts