von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI:...

44
Seminar „Android“ Thema: Schnittstellen von Christian Baumann

Transcript of von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI:...

Page 1: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Seminar „Android“Thema: Schnittstellen

von Christian Baumann

Page 2: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 2 von 44

Inhalt1. Überblick Schnittstellen

Welche Schnittstellen gibt es? Was ist das besondere an Schnittstellen bei Android?

2. Content Provider– Warum Content Provider– Beispiele für existierende Content Provider– Funktionsprinzip der Content Provider– Sicherheit – Vor- und Nachteile – Alternativen zum Content Provider

3. Netzwerk-Schnittstellen– Besonderheiten von Netzwerken bei mobilen Geräten– Welche Schnittstellen hält Android bereit?– Funktionsweise an einem Beispiel

Page 3: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 3 von 44

Inhalt1. Überblick Schnittstellen

– Welche Schnittstellen gibt es?– Was ist das besondere an Schnittstellen bei Android?

2. Content Provider– Warum Content Provider– Beispiele für existierende Content Provider– Funktionsprinzip der Content Provider– Sicherheit – Vor- und Nachteile – Alternativen zum Content Provider

3. Netzwerk-Schnittstellen– Besonderheiten von Netzwerken bei mobilen Geräten– Welche Schnittstellen hält Android bereit?– Funktionsweise an einem Beispiel

Page 4: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 4 von 44

Welche Schnittstellen gibt es?● Grafik-Schnittstellen● Eingabe-Schnittstellen● Telefon-Schnittstellen● Speicher-Schnittstellen● Netzwerk-Schnittstellen

Android besitzt 394 Schnittstellen. Deshalb:

Beschränkung auf Speicher- und Netzwerk-Schnittstellen

Page 5: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 5 von 44

Besonderheiten der Schnittstellen● Netzwerke

– Android läuft auf mobilen Geräten – Große Vielzahl an möglichen Netzwerkverbindungen– Begrenzte Energieversorgung– Keine allgemeine Architektur– Nicht nachrüstbar

● Speicher– Begrenzter Speicher– Wechselnde Speichermedien– Ausführung von schädlicher Software (Spyware) möglich

Page 6: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 6 von 44

Inhalt1. Überblick Schnittstellen

– Welche Schnittstellen gibt es?– Was ist das besondere an Schnittstellen bei Android?

2. Content Provider– Warum Content Provider– Beispiele für existierende Content Provider– Funktionsprinzip der Content Provider– Sicherheit – Vor- und Nachteile – Alternativen zum Content Provider

3. Netzwerk-Schnittstellen– Besonderheiten von Netzwerken bei mobilen Geräten– Welche Schnittstellen hält Android bereit?– Funktionsweise an einem Beispiel

Page 7: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 7 von 44

Warum Content Provider?● Alle Programme laufen in einer eigenen Sandbox● Keine Common Storage Area● Zugriff auf Daten oder Dateien anderer Anwendungen● Durch den Content Provider werden Entwickler angehalten,

Schnittstellen zu definieren.● oder vorgegebene zu benutzen

Page 8: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 8 von 44

Warum Content Provider?Funktionsweise:

Applikation 1

Content Provider

Daten

Applikation 2

Content Resolver EDIT

Page 9: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 9 von 44

Beispiele für existierende Content Provider(aus dem Packages android.provider.*)

● Contacts– Adressbuchdaten

● MediaStore– Multimediadaten

● CallLog– Anruferliste

● Settings– Systemeinstellungen

Page 10: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 10 von 44

Prinzip der Content Provider● Die Ansprache:

– Universal Resource Identifier (URI)

● Die Nutzung:– Lesen und Verändern von Daten

Page 11: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 11 von 44

Prinzip der Content ProviderZugriff auf einen Content Provider erfolgt mittels URI

Struktur:

Schema://Name/Beschreibung/ID

Page 12: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 12 von 44

Prinzip der Content ProviderAufbau des URI:

Schema://Name/Beschreibung/ID

● gibt die Art der Datenquelle an:● android.resource://

– Android-Umgebung● file://

– Datei● content://

– Datenbank- oder Binärinhalt

Page 13: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 13 von 44

Prinzip der Content ProviderAufbau des URI:

Schema://Name/Beschreibung/ID

● gibt den vollqualifizierten Namen der implementierten Klasse an.

Beispiel:– browser/– contacts/

Page 14: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 14 von 44

Prinzip der Content ProviderAufbau des URI:

Schema://Name/Beschreibung/ID

● gibt den Pfad der zurückzugebenden Informationen an.

Beispiel:– people/

● gibt die Personen aus der Anruferliste zurück

Page 15: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 15 von 44

Prinzip der Content ProviderAufbau des URI:

Schema://Name/Beschreibung/ID

● beschränkt die Daten auf bestimmte Schlüsselwerte (optional)

Page 16: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 16 von 44

Prinzip der Content ProviderURI:● URI können über die Dokumentation herausgefunden werden● Der URI liefert i. d. R. einen Cursor auf die Zieldatenmenge● Wenn die Feldnamen bekannt sind, kann gezielt darauf zugegriffen

werden● Wenn nicht, ist das nur durch gezieltes Debuggen möglich

Die fertige URI wird in der Manifest.xml eingetragen:

<provider name="com.example.exampleProvider" authorities="com.example.exampleprovider" . . . />

</provider>

Page 17: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 17 von 44

Prinzip der Content Provider● Beispiel Telefonbuch:

import android.provider.Contacts.People;import android.database.Cursor;

// Form an array specifying which columns to return.String[] projection = new String[] {

People._ID,People._COUNT,People.NAME,People.NUMBER

};// Get the base URI for the People table in the Contacts content provider.Uri contacts = People.CONTENT_URI;

// Make the query.Cursor managedCursor = managedQuery(contacts,

projection, // Which columns to returnnull, // Which rows to return (all rows)null, // Selection arguments (none)// Put the results in ascending order by namePeople.NAME + " ASC");

Page 18: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 18 von 44

Prinzip der Content Provider

Datenbestand:

Rückgabe:

_ID NUMBER NUMBER_KEY LABEL NAME TYPE

13 (425) 555 6677 425 555 6677 Kirkland office Bully Pulpit TYPE_WORK

44 (212) 555-1234 212 555 1234 NY apartment Alan Vain TYPE_HOME

45 (212) 555-6657 212 555 6657 Downtown office Alan Vain TYPE_MOBILE

53 201.555.4433 201 555 4433 Love Nest Rex Cars TYPE_HOME

_ID _COUNT NAME NUMBER

44 3 Alan Vain 212 555 1234

13 3 Bully Pulpit 425 555 6677

53 3 Rex Cars 201 555 4433

Page 19: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 19 von 44

Prinzip der Content Provider● Beispiel für Veränderung des Bestandes:

import android.provider.Contacts.People;import android.content.ContentResolver;import android.content.ContentValues;

ContentValues values = new ContentValues();// Add Abraham Lincoln to contacts and make him a favorite.values.put(People.NAME, "Abraham Lincoln");

// 1 = the new contact is added to favorites// 0 = the new contact is not added to favoritesvalues.put(People.STARRED, 1);

Uri uri = getContentResolver().insert(People.CONTENT_URI, values);

Page 20: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 20 von 44

Sicherheit● Exkurs: Sicherheitsstruktur von Android● Zugriffsrechte● URI Permission

Page 21: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 21 von 44

Exkurs: Sicherheitsstruktur● Es gibt ein Rechtesystem● Jede Anwendung läuft in einer eigenen Sandbox● Anwendungen haben standardmäßig nicht das Recht, sich

gegenseitig zu beeinflussen● Jede Anwendung muss signiert werden (allerdings nicht von einer

offiziellen Stelle)

Page 22: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 22 von 44

Sicherheit● Zugriffsrechte:

● Jede Anwendung erhält ihre individuelle User-ID● Diese ID ist lebenslang gültig● Jede Anwendung läuft unter dieser ID in einem Sandbox-Prozess● Die ID gibt an, wo die Daten gespeichert werden● Die einzige Ausnahme: Zwei Anwendungen haben in ihrer Manifest.xml

ein sharedUserId-Flag gesetzt● Ein Anwendung muss in ihrer Manifest.xml anzeigen, welche Rechte sie

anfordert

Page 23: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 23 von 44

Sicherheit● URI Permission

● Die Zugriffsrechte auf Content Provider werden analog der Zugriffsrechte in der Manifest.xml verwaltet

<grant-uri-permission android:path="string" android:pathPattern="string" android:pathPrefix="string" />

Eintrag in der Manifest.xml:

Page 24: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 24 von 44

Vor- und Nachteile von Content Providern● Vorteile:

– Universelle Schnittstellen– Vorgegebene Struktur– Sicherheitskonzept

● Nachteile:– Übermittelt „nur“ einen Cursor– Es müssen immer alle Methoden für die DB-Abfragen implementiert sein

Page 25: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 25 von 44

Alternativen zum Content Provider● Nutzung der java.io

– Funktioniert nur bei SD-Karten– Funktioniert nur auf Dateisystemebene– Unterwandert das Sicherheitsprinzip

● Nutzung eines Remote Service– Bei kleinen Datenmengen performanter– Bei großen unperformant– Für kleine Mengen komplexer Datenstrukturen gut

Page 26: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 26 von 44

Inhalt1. Überblick Schnittstellen

– Welche Schnittstellen gibt es?– Was ist das besondere an Schnittstellen bei Android?

2. Content Provider– Warum Content Provider– Beispiele für existierende Content Provider– Funktionsprinzip der Content Provider– Sicherheit – Vor- und Nachteile – Alternativen zum Content Provider

3. Netzwerk-Schnittstellen– Besonderheiten von Netzwerken bei mobilen Geräten– Welche Schnittstellen hält Android bereit?– Funktionsweise an einem Beispiel

Page 27: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 27 von 44

Besonderheiten von Netzwerken bei mob. Geräten● Variable Signalqualität● Variable Datenrate● Netzwerkzugang kann sich ändern● Uneinheitliche Kostenstruktur bei den einzelnen

Netzwerkverbindungen

Page 28: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 28 von 44

Netzwerk-Schnittstellen● Welche Schnittstellen hält Android bereit?

– java.net.*– org.apache.http– android.net.*

Page 29: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 29 von 44

Welche Schnittstellen hält Android bereit?● java.net.* (Auszüge)

– ContentHandler– DatagramSocket– InetAddress– NetworkInterface– SocketAdress– URL

Page 30: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 30 von 44

Welche Schnittstellen hält Android bereit?● Jakarta Commons HttpComponents (org.apache.http)

● bietet diverse Features für http, die nicht Bestandteil von java.net sind– verbesserte Cookie-Unterstützung– verbessertes SSL-Handling– http GET/POST Implementierung– ...

Page 31: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 31 von 44

Welche Schnittstellen hält Android bereit?● Jakarte Commons HttpComponents

● unterteilt sich in zwei Teile– HttpComponents Core

● Implementierung der fundamentalen HTTP-Konzepte – HttpComponents Client

● Clientseitige Implementation von HTTP-Konzepten

Page 32: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 32 von 44

Welche Schnittstellen hält Android bereit?● android.net

– ConnectivityManager● Benachrichtigung bei Verbindungsabruch● Automatisches Failover

– NetworkInfo● Informationen über die Netzwerkverbindung

Page 33: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 33 von 44

Netzwerk-Schnittstellen● ConnectivityManager

– Hintergrundservice– Sendet Broadcast Intent bei Verbindungsabbruch.

Dieser kann durch einen Broadcast Receiver in der Anwendung aufgefangen und verarbeitet werden.

– Sendet ebenfalls einen, bei wieder aufgenommener Verbindung– Verwaltet alle Netzwerkverbindungen. Bei Wegfall einer Verbindung versucht

er automatisch eine neue aufzubauen. – wird erzeugt durch:

Page 34: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 34 von 44

Netzwerk-Schnittstellen● Beispiel: Chatprogramm

Internet

Verbindung via UMTS

Android-Handy

ConnectivityManagerSendet

Page 35: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 35 von 44

Netzwerk-Schnittstellen● Beispiel: Chatprogramm

Internet

Verbindung via UMTS

Android-Handy

ConnectivityManager

Benachrichtigt

Page 36: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 36 von 44

Netzwerk-Schnittstellen● Beispiel: Chatprogramm

Internet

Verbindung via WLAN

Android-Handy

ConnectivityManager

Benachrichtigt

Page 37: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 37 von 44

Netzwerk-Schnittstellen● Beispiel Chatprogramm

Internet

Verbindung via WLAN

Android-Handy

ConnectivityManagerSendet

Page 38: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 38 von 44

Netzwerk-Schnittstellen● NetworkInfo:

– Datentyp für Netzwerkverbindungen– wird durch Methoden am ConnectivityManager erzeugt

● getActiveNetworkInfo()● getAllNetworkInfo()● getNetworkInfo(int networkType)

– liefert Informationen über das Netzwerk● getState()● isConnected()● getType()● getTypeName()

Page 39: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 39 von 44

Netzwerk-Schnittstellen● android.net.wifi

● Android bietet Schnittstellen speziell für WLAN.– WifiManager– WifiManager.MulticastLock– WifiManager.WifiLock– ...

Page 40: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 40 von 44

Netzwerk-Schnittstellen● Wie läuft das ab?

Folgendes Szenario:● Der Android-Benutzer hat einen Instant-Messenger● Er zahlt über GPRS nach Datenmenge● Bei WLAN zahlt er nichts● Er holt die Nachrichten vom Server● Je nach Verbindung soll die Abholfrequenz angepasst werden

Page 41: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 41 von 44

Netzwerk-Schnittstellen● Code:

ConnectivityManager cm =Context.getSystemService(

Context.CONNECTIVITY_SERVICE);...if (arbeit2 == null) //damit maximal ein task erstellt wird und nicht jedes mal ein neuer.{

if(cm.getActiveNetworkInfo().getType()==0){

time = 1000;}else{

time = 5000;}

arbeit2 = new arbeit();timer.schedule(arbeit2, 1,time);

}...private class arbeit extends TimerTask{

public void run(){

msgOut[] verarbeitung = liste.listeVersenden();String sendung = "";sendung += new msgOutPresence(_user,_pass,_status,_status2).Get_String();

for(int i=0;i<verarbeitung.length;i++){

sendung += verarbeitung[i].Get_String();}

eingang(server.Pull(sendung));}

}

Page 42: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 42 von 44

Fazit:● Speicher:

● Klar strukturierte Schnittstellen● Berücksichtigung einer Sicherheitsarchitektur auf OS-Ebene● Möglichkeit freier Nutzung eigener Software

● Netzwerk:● Vereinfachte Schnittstelle● Failover-System

Page 43: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 43 von 44

Literatur● http://developer.android.com/index.html

– Die offizielle Homepage● Android - Grundlagen der Programmierung

– Arno Becker, Marcus Pant

Page 44: von Christian Baumann - uni-hamburg.de€¦ · Folie 16 von 44 Prinzip der Content Provider URI: URI können über die Dokumentation herausgefunden werden Der URI liefert i. d. R.

Folie 44 von 44

Das war's...

● Vielen Dank für's Zuhören!