Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
DEV CORNER<br />
Google Drive nutzen<br />
LISTING 5: Authorisierung seitens Google Drive<br />
// Die Google Credentials aufbauen<br />
GoogleCredential credential = new GoogleCredential();<br />
// Den Token setzen<br />
credential.setAccessToken(authToken);<br />
HttpTransport transport = <strong>Android</strong>Http.newCompatibleTransport();<br />
JsonFactory jsonFactory = new <strong>Android</strong>JsonFactory();<br />
// Eine Instanz von Google Drive erzeugen mit dem "Simple API Key"<br />
MyApplication.setDrive(new Drive.Builder(transport, jsonFactory, credential)<br />
.setApplicationName(MyApplication.getAppName())<br />
.setJsonHttpRequestInitializer(<br />
new GoogleKeyInitializer(MyConstants.APIKEY_SIMPLE))<br />
.build());<br />
LISTING 6: Starten einer Anfrage<br />
aboutTask = new AboutAsyncTask(MyConstants.ASYNCTASK_ABOUT, this, this);<br />
aboutTask.execute();<br />
LISTING 7: Die Anfrage im eigenen Thread<br />
public class AboutAsyncTask extends MyAsyncTask {<br />
public AboutAsyncTask(int taskId, Context context,<br />
final MyOnAsyncTaskCompletedListener listener) {<br />
super(taskId, context, listener);<br />
}<br />
@Override<br />
protected About doInBackgro<strong>und</strong>(Void... voids) {<br />
About result = null;<br />
try {<br />
// Benutzerdaten von Google Drive holen<br />
result = MyApplication.getDrive().about().get().execute();<br />
} catch (GoogleJsonResponseException exception) {<br />
GoogleJsonError error = exception.getDetails();<br />
errorCode = error.getCode();<br />
} catch (Exception exception) {<br />
//<br />
}<br />
return result;<br />
}<br />
}<br />
LISTING 8: Suchen <strong>und</strong> filtern<br />
String query = "'root' in parents and trashed=false and mimeType='application/<br />
vnd.google-apps.folder'";<br />
LISTING 9: Kommunikationsfehler<br />
Intent intent = new Intent();<br />
intent.putExtra("ERRORCODE", errorCode);<br />
setResult(RESULT_CANCELED, intent);<br />
finish();<br />
fernden Ergebnisse pro Seite ist konfigurierbar,<br />
entlässt den Entwickler aber nicht aus<br />
der Verantwortung, da niemand weiß, wie<br />
umfangreich die Dateibestände in Verzeichnissen<br />
des Benutzers so sein können.<br />
Um den Netzwerk-Traffic so gering wie<br />
möglich zu halten, erlaubt Google Drive das<br />
Aufsetzen auf ein bestimmtes Verzeichnis<br />
<strong>und</strong> das Filtern dessen Inhalts. Beides kann<br />
mit der Methode setQ() beim Aufruf übergeben<br />
werden. Die in Listing 8 gezeigte Befehlsfolge<br />
prüft zunächst, ob die Alias-ID<br />
root irgendwo als Parent eingetragen ist <strong>und</strong><br />
ob diese Elemente dann auch noch den<br />
MimeType=Verzeichnis besitzen. Diese<br />
Query liefert alle Wurzelverzeichnisse des<br />
betreffenden <strong>User</strong>s bei Google Drive.<br />
Hinweis: Eine Liste der möglichen Suchfelder<br />
<strong>und</strong> Operatoren ist im Web einsehbar<br />
[LINK 6]. Leider ist nicht jeder Operator mit<br />
jedem Feld kombinierbar. Der Regeln erscheinen<br />
willkürlich <strong>und</strong> scheinen sich auch noch<br />
in Entwicklung zu befinden. Ein Blick auf<br />
das ChangeLog jeder neuen Version des SDK<br />
ist aus diesem Gr<strong>und</strong> dringend angeraten.<br />
Im Fehlerfall<br />
Der Fehlerbehandlung sollte man ein paar<br />
Augenblicke zugestehen. In der Beispiel-App<br />
wurde folgender Ansatz gewählt. Tritt ein<br />
Fehler auf, dann wird jede Activity, außer die<br />
MainActivity, sofort beendet, <strong>und</strong> der Fehlercode<br />
wird an die jeweilige Parent-Activity<br />
durchgereicht. Das kann über mehrere<br />
Schritte hin bis zur MainActivity erfolgen –<br />
der Benutzer merkt das nicht. In der Main-<br />
Activity werden dann die Fehler an zentraler<br />
Stelle bearbeitet (Listing 9).<br />
In der Beispiel-App wird nur ein zeitlich<br />
abgelaufener Token behandelt, alle anderen<br />
Fehler werden dem Benutzer nur ausgegeben.<br />
Damit die App nicht Amok läuft, unternimmt<br />
sie maximal drei Versuche, den Token<br />
zu erneuern.<br />
Fazit<br />
Mit den verfügbaren Schnittstellen zu Google<br />
Drive stehen interessierten Entwicklern alle<br />
Möglichkeiten offen. Googles eigene Drive<br />
App ist nicht gerade mit Features überladen.<br />
Dieses Loch können mithilfe des API [LINK 7]<br />
andere Entwickler nun füllen. Obwohl das<br />
Google Drive SDK sich noch im Beta-Stadium<br />
befindet, ist es erstaunlich stabil. Es bleibt<br />
hingegen zu hoffen, dass die Klassen <strong>und</strong><br />
Methoden stabil bleiben. Google ist auf diesem<br />
Gebiet als nicht gerade sehr entwicklerfre<strong>und</strong>lich<br />
bekannt. Die grobe Ausrichtung<br />
ist aber schon jetzt klar zu erkennen. ● ● ●<br />
112<br />
JANUAR 2013<br />
ANDROID-USER.DE