Seminar Android Thema: Schnittstellen von Christian Baumann



Ähnliche Dokumente
Schnittstellen. Seminar Android: Plattform für mobile Geräte

3. Persistenz und Datenbanken Content Providers. Content Providers. Generische Schnittstelle zum Zugriff auf Daten zwischen Anwendungen

OP-LOG

4D Server v12 64-bit Version BETA VERSION

Lizenzen auschecken. Was ist zu tun?

SEMINAR Modifikation für die Nutzung des Community Builders

Netzwerkeinstellungen unter Mac OS X

iphone-kontakte zu Exchange übertragen

Lexware professional und premium setzen bis einschließlich Version 2012 den Sybase SQL-Datenbankserver

ecaros2 - Accountmanager

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Bedienungsanleitung für den SecureCourier

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer.

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Formular»Fragenkatalog BIM-Server«

Programmieren in Java

Windows 7 - Whoami. Whoami liefert Informationen wie z.b. die SID, Anmelde-ID eines Users, sowie Gruppenzuordnungen, Berechtigungen und Attribute.

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

Naim-Musikserver Streamen der itunes-inhalte von einem Mac

desk.modul : WaWi- Export

:: Anleitung Hosting Server 1cloud.ch ::

Updatehinweise für die Version forma 5.5.5

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Technical Note 0606 ewon

Daten Sichern mit dem QNAP NetBak Replicator 4.0

BitDefender Client Security Kurzanleitung

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

crm-now/ps Webforms Webdesigner Handbuch Erste Ausgabe

AUTOMATISCHE -ARCHIVIERUNG. 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!

Datensicherung. Mögliche Vorgehensweisen:

Mobile Anwendungen Google Cloud Messaging

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

SJ OFFICE - Update 3.0

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

Leitfaden zur Nutzung des System CryptShare

Step by Step Webserver unter Windows Server von Christian Bartl

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

L2TP over IPSec mit Windows Mobile 5 für die VPN-Services an der Technischen Universität Wien.

Leitfaden zur Nutzung von binder CryptShare

Zugriff auf OWA Auf OWA kann über folgende URLs zugegriffen werden:

Nutzung der VDI Umgebung

Android Remote Desktop & WEB

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ

Xerox Device Agent, XDA-Lite. Kurzanleitung zur Installation

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Lizenz Verwaltung. Adami Vista CRM

Bedienungsanleitung GYMplus

Objektorientierte Programmierung

Installation der 4Dv12sql Software für Verbindungen zum T.Base Server

FINANZ+ mobile Erfassung. Finanzmanagementsystem FINANZ+ Erfassung von Zählerständen auf mobilen Geräten

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

SharePoint Demonstration

Java Kurs für Anfänger Einheit 5 Methoden

Microsoft Office Visio 2007 Infotag SemTalk Thema: Prozessmodellierung

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

Import des persönlichen Zertifikats in Outlook Express

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook ( ) Zentrum für Datenverarbeitung der Universität Tübingen

Schwacke Schnittstelle

FlashAir. Tool zur Firmwareaktualisierung Version Bedienungsanleitung

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

Autoresponder Unlimited 2.0

Man liest sich: POP3/IMAP

Version Deutsch In diesem HOWTO wird beschrieben wie Sie Ihren Gästen die Anmeldung über eine SMS ermöglichen.

Unsere Webapplikation erweitern

Installation und Inbetriebnahme von SolidWorks

Daten fu r Navigator Mobile (ipad)

iphone 4 - Einrichtung des VPN Clients (Cisco VPN Client) / Verbinden des iphones mit einem Exchange

Informatik 12 Datenbanken SQL-Einführung

Java Einführung Packages

Anleitung für den Zugriff auf Mitgliederdateien der AG-KiM

ERSTE SCHRITTE.

Benutzerhandbuch MedHQ-App

Anwenderhandbuch. ipoint - Server

Dokumentation Typo3. tt - news - Nachrichtenmodul

White Paper. Konfiguration und Verwendung des Auditlogs Winter Release

3. Stored Procedures und PL/SQL

26. November Die Firewall

Dokumentation EGVP-Übertmittlungsfehler bei Server-Engpässen Vorgehensweise Seite 1 von 5

Kurzeinführung Excel2App. Version 1.0.0

White Paper. Installation und Konfiguration der Fabasoft Integration für CalDAV

SMS/ MMS Multimedia Center

SharePoint Workspace 2010 Installieren & Konfigurieren

DOKUMENTATION VOGELZUCHT 2015 PLUS

Auto-Provisionierung tiptel 30x0 mit Yeastar MyPBX

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

ROFIN App Benutzerhandbuch. Version 1.0

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

macs Support Ticket System

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Telefonieren mit App's"! iphone mit Bria Informationen zur Nutzung von TeScript

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

ecall Anleitung Outlook Mobile Service (OMS)

CGM JESAJANET Zuweiserportal Einrichtung des Konfigurationsassistenten und der Benachrichtigungen

SEPA Lastschriften. Ergänzung zur Dokumentation vom Workshop Software GmbH Siemensstr Kleve / /

Transkript:

Seminar Android Thema: Schnittstellen von Christian Baumann

Inhalt 1. Ü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 Folie 2 von 44

Inhalt 1. Ü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 Folie 3 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 Folie 4 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 Speicher Nicht nachrüstbar Begrenzter Speicher Wechselnde Speichermedien Ausführung von schädlicher Software (Spyware) möglich Folie 5 von 44

Inhalt 1. Ü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 Folie 6 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 Folie 7 von 44

Warum Content Provider? Funktionsweise: Applikation 1 Applikation 2 Daten Content Provider Content Resolver EDIT Folie 8 von 44

Beispiele für existierende Content Provider (aus dem Packages android.provider.*) Contacts Adressbuchdaten MediaStore Multimediadaten CallLog Settings Anruferliste Systemeinstellungen Folie 9 von 44

Prinzip der Content Provider Die Ansprache: Universal Resource Identifier (URI) Die Nutzung: Lesen und Verändern von Daten Folie 10 von 44

Prinzip der Content Provider Zugriff auf einen Content Provider erfolgt mittels URI Struktur: Schema://Name/Beschreibung/ID Folie 11 von 44

Prinzip der Content Provider Aufbau des URI: Schema://Name/Beschreibung/ID gibt die Art der Datenquelle an: android.resource:// file:// content:// Android-Umgebung Datei Datenbank- oder Binärinhalt Folie 12 von 44

Prinzip der Content Provider Aufbau des URI: Schema://Name/Beschreibung/ID gibt den vollqualifizierten Namen der implementierten Klasse an. Beispiel: browser/ contacts/ Folie 13 von 44

Prinzip der Content Provider Aufbau des URI: Schema://Name/Beschreibung/ID gibt den Pfad der zurückzugebenden Informationen an. Beispiel: people/ gibt die Personen aus der Anruferliste zurück Folie 14 von 44

Prinzip der Content Provider Aufbau des URI: Schema://Name/Beschreibung/ID beschränkt die Daten auf bestimmte Schlüsselwerte (optional) Folie 15 von 44

Prinzip der Content Provider URI: 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> Folie 16 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 return null, // Which rows to return (all rows) null, // Selection arguments (none) // Put the results in ascending order by name People.NAME + " ASC"); Folie 17 von 44

Prinzip der Content Provider Datenbestand: _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 Rückgabe: _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 Folie 18 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 favorites values.put(people.starred, 1); Uri uri = getcontentresolver().insert(people.content_uri, values); Folie 19 von 44

Sicherheit Exkurs: Sicherheitsstruktur von Android Zugriffsrechte URI Permission Folie 20 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) Folie 21 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 Folie 22 von 44

Sicherheit URI Permission Die Zugriffsrechte auf Content Provider werden analog der Zugriffsrechte in der Manifest.xml verwaltet Eintrag in der Manifest.xml: <grant-uri-permission android:path="string" android:pathpattern="string" android:pathprefix="string" /> Folie 23 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 Folie 24 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 Folie 25 von 44

Inhalt 1. Ü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 Folie 26 von 44

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

Netzwerk-Schnittstellen Welche Schnittstellen hält Android bereit? java.net.* org.apache.http android.net.* Folie 28 von 44

Welche Schnittstellen hält Android bereit? java.net.* (Auszüge) ContentHandler DatagramSocket InetAddress NetworkInterface SocketAdress URL Folie 29 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... Folie 30 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 Folie 31 von 44

Welche Schnittstellen hält Android bereit? android.net ConnectivityManager Benachrichtigung bei Verbindungsabruch Automatisches Failover NetworkInfo Informationen über die Netzwerkverbindung Folie 32 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: Folie 33 von 44

Netzwerk-Schnittstellen Beispiel: Chatprogramm Sendet ConnectivityManager Android-Handy Verbindung via UMTS Internet Folie 34 von 44

Netzwerk-Schnittstellen Beispiel: Chatprogramm Benachrichtigt ConnectivityManager Android-Handy Verbindung via UMTS Internet Folie 35 von 44

Netzwerk-Schnittstellen Beispiel: Chatprogramm Benachrichtigt ConnectivityManager Android-Handy Verbindung via WLAN Internet Folie 36 von 44

Netzwerk-Schnittstellen Beispiel Chatprogramm Sendet ConnectivityManager Android-Handy Verbindung via WLAN Internet Folie 37 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() Folie 38 von 44

Netzwerk-Schnittstellen android.net.wifi Android bietet Schnittstellen speziell für WLAN. WifiManager WifiManager.MulticastLock WifiManager.WifiLock... Folie 39 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 Folie 40 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)); } Folie 41 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 Folie 42 von 44

Literatur http://developer.android.com/index.html Die offizielle Homepage Android - Grundlagen der Programmierung Arno Becker, Marcus Pant Folie 43 von 44

Das war's... Vielen Dank für's Zuhören! Folie 44 von 44