API

Content Provider Contract für die Zeiterfassung App

Mit dem kompletten Redesign wurde auch eine externe API für den Zugriff auf die gespeicherten Daten umgesetzt. Dabei handelt es sich um einen freigegebenen Content Provider. Bei Bitbucket und GitHub liegt das Contract Projekt im Quellcode frei zur Verfügung (URIs, Permissions, Actions, Columns usw.).

Mit diesen Informationen ist es nun möglich Erweiterungen für die App zu programmieren. So ist zum Beispiel momentan auch das Widget umgesetzt (als eigenständige Erweiterung, die über den Content Provider auf die Daten zugreift).

Der Contract enthält neben den Tabellen und Spalten-Definitionen auch die für die Speicherung der Zeit notwendige Converter.

Die Tabellen-Informationen sind in Bereiche aufgeteilt (Konfiguration, Stammdaten, Auswertungen, Zeitdaten), die jeweils eigene Berechtigungen benötigen, wenn man auf diese zugreifen möchte.

Als Beispiel für die Anwendung liegt bei Bitbucket das Widget-Projekt als Open Source bereit. Dieser ist in Android Studio umgesetzt und nutzt das Contract als Abhängigkeit (AAR) vom JCenter/Maven Central. Damit muss man den Code nicht mehr direkt integrieren, sondern nur die Abhängigkeit im eigenen Projekt festlegen.

Und nun viel Spass bei der Nutzung der API. Für Vorschläge für die Erweiterung, Verbesserung usw. bin ich sehr dankbar und werde versuchen diese umzusetzen, solange es sinnvoll ist.

dependencies {
   compile fileTree(include: ['*.jar'], dir: 'libs')
   compile 'com.android.support:appcompat-v7:22.1.1'
   compile 'de.webducer.android:wd-timetracking-contract:0.4.2-beta1'
   compile 'de.webducer.android:wd-android-utilities:0.1.2-beta1'
}

Diskussion