25.02.2014 Aufrufe

Android User Android und TV (Vorschau)

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!