© Excellent backgrounds/Shutterstock.com
Das Storage Access Framework

Android und die Cloud


Dank Always-on und Highspeed-Internet scheinen Cloud-basierte Storage-Dienste wie Box, Google Drive oder Dropbox besonders für mobile Devices eine ideale Speicherlösung zu sein. Entsprechende Apps der Hersteller ermöglichen dabei den Zugriff vom Smartphone oder Tablet auf das jeweilige System. Wie aber sieht es aus, wenn man aus der eigenen Anwendung heraus auf einen der Cloud-Storages zugreifen möchte? Gar nicht mal so schlecht – dank Storage Access Framework.

Wollte man in der Ära vor Android 4.4 aus der eigenen App heraus auf Cloud-basierte Storage-Systeme zugreifen, waren dafür in der Regel proprietäre APIs oder individuelle Zugriffsprotolle der verschiedenen Anbieter notwendig. Zwar bieten nahezu alle bekannten Dienste die zum Lesen und Schreiben von beliebigen Dokumenten notwendigen SDKs an (Google Drive [1], Box [2], Dropbox [3]), dies schützt aber leider nicht davor, dass bei diesem Weg je angebundenen System eine eigene Lösung implementiert werden muss.

Genau an diesem Problem setzt das neue Storage Access Framework (SAF) an. Aus Sicht des Anwenders bietet es ein einfaches und einheitliches User Interface (Document Picker) zum Browsen, Auswählen, Erstellen und Löschen von Dateien auf internen oder externen Speichersystemen – aka Document Provider. Neben lokalen Providern auf dem Device selbst oder Cloud-basierten Lösungen im „Nirgendwo“ können dies auch temporär zur Verfügung stehende Systeme, wie zum Beispiel USB-Sticks, sein.

Globales Lesen erlaubt ...

Möchte man aus einer eigenen Anwendung heraus mittels SAF ein Dokument eines bestimmten Typs, in unserem Beispiel ein Bild, öffnen, reicht der Aufruf der Methode startActivityForResult mit entsprechendem Intent (Listing 1, gekürzt aus [4]).

Listing 1: Abfrage zum Öffnen eines Bilds

public void performImageSearch() {  // choose a file via the system's filebrowser Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);  // Filter to only show results that can be "opened" intent.addCategory(Intent.CATEGORY_OPENABLE);  // Filter to show only images, using the image MIME data type. intent.setType("image/*"); startActivityForResult(intent, SEARCH_IMAGE_REQUEST_CODE); }

Dank der gewählten Intent Action ACTION_OPEN_DOCUMENT wird von Android automatisch der Document Picker gestartet und alle DocumentProvider zur Auswahl angezeigt, die sich bei ihrer Installation für den gewünschten Contenttyp registriert haben. In unserem Beispiel werden also alle Document Provider aufgelistet, die potenziell Bilder z...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang