Android-Programmering. Vår 2017

Like dokumenter
2 Aktiviteter og intensjoner

IN2000. Gjennomgang av tekniske oppgaver på prøveeksamen. Erlend Stenlund og Steffen Almås + innspill fra Gaute Berge

Android app-utvikling & dagens trusselbilde

2 Aktiviteter og intensjoner

AKTIVITETER OG INTENSJONER...

CORBA Component Model (CCM)

EKSAMEN OBJEKTORIENTERT PROGRAMMERING Alle trykte og skrevne. Java API dokumentasjon er tilgjengelig lokalt på hver maskin.

INF Notater. Veronika Heimsbakk 10. juni 2012

Message Oriented Middleware (MOM) Thomas Filip Andresen Arild Berggren Eivind Bøhn

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Operativsystemer og grensesnitt

Å bruke Java API-et til å sortere tabeller/arraylister der elementene er (referanser til) objekter

GraphQL. Hva, hvorfor, hvordan

Web Services. Olav Lysne

Lenkelister, iteratorer, indre klasser. Repetisjonskurs våren 2018 kristijb

Implementering av caching ved hjelp av Spring. Christian Vestøl

INF januar 2015 Stein Michael Storleer (michael) Lenkelister

Repetisjon: Normalformer og SQL

PG4200 Algoritmer og datastrukturer Forelesning 7

Argumenter fra kommandolinjen

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Introduksjon til objektorientert programmering

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

INF1010 våren januar. Objektorientering i Java

Lenkelister. Lister og køer.

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

FS-API Status og veien videre. Kai Quale og Mario Ledinscak KDTO

Kapittel 8: Programutvikling

INF2810: Funksjonell Programmering. Køer, tabeller, og (litt om) parallelitet

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist

Brukerdokumentasjon. Webservices og webklient for kodeverk/ kodeverdi verifisering

AlgDat 10. Forelesning 2. Gunnar Misund

C# (.Net) EE1212 Objektorientert programmering

INF1010 siste begreper før oblig 2

INF1000: Forelesning 7

Programmeringsspråket C Del 3

Kalkulator-leksjonen (nesten ferdig)

Abaris-notat Teknisk beskrivelse av kodeverkskomponent for ICPC-2

IN1010 våren januar. Objektorientering i Java

Multimedia in Teacher Training (and Education)

XML Schema. David Massey MBIB

Vedlegg 1: Oversikt over noen mulige leverandører

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs

Innhold. 1.1.Hva er en avansert mobil enhet?

INF1000: Forelesning 7. Konstruktører Static

Web fundamentals. Web design. Frontend vs. Backend Webdesign 17. januar Monica Strand

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Innlevering 2b i INF2810, vår 2017

INF Algoritmer og datastrukturer

Operasjoner på lenkede lister (enkeltlenket) Eksempel på en lenket liste: personliste. INF januar 2010 (uke 3) 2

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

DHL EasyShip v5.2. Brukerveiledning

Interface to building application

UNIVERSITETET I OSLO

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

TDT4165 PROGRAMMING LANGUAGES. Exercise 01 Introduksjon til Oz

Fra Python til Java, del 2

Innendørs kart og navigering

Liste som abstrakt konsept/datatype

IN1010 V18, Obligatorisk oppgave 5

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

Dagens forelesning. INF1010 Datastrukturer Lister og køer Pekerkjedelister Øvelser. Innhold i dette lysarksettet

Eksamensoppgave i IFUD1025 Programmering i Java

INF2810: Funksjonell Programmering. En metasirkulær evaluator

Haskell. Kjetil Ørbekk. Programvareverkstedet, 19. mars 2009

FluentAutomation. Et automatiserings-rammeverk for regresjonstesting (og mye annet! )

Algoritmer og datastrukturer A.1 Filbehandling på bit-nivå

Løsningsforslag ukeoppg. 9: okt (INF Høst 2011)

INF2810: Funksjonell Programmering. En metasirkulær evaluator

Stack. En enkel, lineær datastruktur

Eksamen. Objektorientert Programmering IGR 1372

Object interaction. Innhold. Abstraksjon Grunnleggende programmering i Java Monica Strand 3. september 2007.

INF2810: Funksjonell Programmering. Kommentarer til prøveeksamen

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Obligatorisk oppgave 2: Bilhierarki

Jentetreff INF1000 Debugging i Java

INF2220: Forelesning 3. Map og hashing Abstrakte datatyper (kapittel 3.1) Map (kapittel 4.8) Hashing (kapittel 5)

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

INF2220: Forelesning 3

Transkript:

Android-Programmering Vår 2017

Agenda Repetisjon Komponenter AndroidManifest.xml og Gradle Activity Lifecycle Intents

Applikasjonskjøring.apk - Android Pacakage Linux -> Flerbrukersystem Unik Linux brukerid Hver prosess har sin egen VM Hver app kjører i egen prosess Least Privilege Utvidede rettigheter

Repetisjon - Komponenter Activities Services Content providers Broadcast receivers Intents

Repetisjon - Komponenter Activities Services Content providers Broadcast receivers Intents

Repetisjon - Komponenter Activities Services Content providers Broadcast receivers Intents

Repetisjon - Komponenter Activities Services Content providers Broadcast receivers Intents

Repetisjon - Komponenter Activities Services Content providers Broadcast receivers Intents

Repetisjon - Komponenter Activities Services Content providers Broadcast receivers Intents

AndroidManifest.xml Obligatorisk Innholder java-package for appen package= no.hiof.larseknu.myapplication" Beskriver alle komponentene i appen <activity android:name=".mainactivity" android:label="@string/app_name"> </activity> Håndterer rettigheter <uses-permission android:name="android.permission.read_contacts"/> <uses-feature android:name="android.hardware.camera.any android:required= true /> Kan deklarere API som appen krever <uses-sdk android:minsdkversion= 16 android:targetsdkversion= 25 /> Vil bli overskrevet hvis deklarert i build.gradle (anbefalt)

Struktur <?xml version="1.0" encoding="utf-8"?> <manifest> <uses-permission /> <permission /> <permission-tree /> <permission-group /> <instrumentation /> <uses-sdk /> <uses-configuration /> <uses-feature /> <supports-screens /> <compatible-screens /> <supports-gl-texture /> <application> <activity> <intent-filter> <action /> <category /> <data /> </intent-filter> <meta-data /> </activity> <activity-alias> <intent-filter>... </intent-filter> <meta-data /> </activity-alias> <service> <intent-filter>... </intent-filter> <meta-data/> </service> <receiver> <intent-filter>... </intent-filter> <meta-data /> </receiver> <provider> <grant-uri-permission /> <meta-data /> <path-permission /> </provider> <uses-library /> </application> </manifest> https://developer.android.com/guide/topics/manifest/manifest-intro.html#filestruct

Elementer <action> <activity> <activity-alias> <application> <category> <data> <grant-uri-permission> <instrumentation> <intent-filter> <manifest> <meta-data> <permission> <permission-group> <permission-tree> <provider> <receiver> <service> <supports-screens> <uses-configuration> <uses-feature> <uses-library> <uses-permission> <uses-sdk> https://developer.android.com/guide/topics/manifest/manifest-intro.html#filestruct

Elementer <manifest> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="no.hiof.larseknu.playingwithandroid"> <application> <application android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme«> </application> https://developer.android.com/guide/topics/manifest/manifest-intro.html#filestruct

Elementer <uses-permission> <uses-permission android:name="android.permission.internet" /> <permission> <manifest... > <permission android:name="com.example.project.debit_acct"... /> <uses-permission android:name="com.example.project.debit_acct" />... <application...> <activity android:name="com.example.project.freneticactivity" android:permission="com.example.project.debit_acct"... >... </activity> </application> </manifest> <permission-group> https://developer.android.com/guide/topics/manifest/manifest-intro.html#filestruct

Elementer <activity> <provider> <receiver> <service> <manifest package="com.example.project"... > <application... > <service android:name=".secretservice"... >... </service>... </application> </manifest> https://developer.android.com/guide/topics/manifest/manifest-intro.html#filestruct

Elementer <intent-filter> <activity android:name=".mainactivity" <intent-filter> <action android:name="android.media.action.image_capture" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> https://developer.android.com/guide/topics/manifest/manifest-intro.html#filestruct

Elementer <uses-feature> <manifest... > <uses-feature android:name="android.hardware.sensor.compass" android:required="true" />... </manifest> <uses-sdk> («deprecated») <manifest... > <uses-sdk android:minsdkversion="21" android:targetsdkversion= 25" />... </manifest> https://developer.android.com/guide/topics/manifest/manifest-intro.html#filestruct

Activity Komponent som håndterer brukergrensesnitt MainActivity Back Stack LIFO Last in, first out Activity Lifecycle Callback Methods

Activity Lifecycle En activity eksisterer i hovedsakelig tre tilstander: Resumed Paused Stopped Callback Methods oncreate() onstart() onresume() onpause() onstop() ondestroy() Alle callback metoder må også kalle på superklassen sin implementasjon av metoden.

Activity Lifecycle En activity eksisterer i hovedsakelig tre tilstander: Resumed Paused Stopped Callback Methods oncreate() onstart() onresume() onpause() onstop() ondestroy() Alle callback methods må også kalle på superklassen sin implementasjon av metoden.

Intents Kommunikasjonsobjekt Tre bruksområder Starte en activity Starte en service Levere en broadcast To typer intents Explicitte Implicit

Eksplisitte Intents

Implisitte Intents

Intent objektet Inneholder ComponentName Action String-verdi Bruker ofte pakkenavn Mange innebygde Kun én action per intent Data Category Extras Key Value

Action En action beskriver hva som skal utføres Action er en string verdi Bruker ofte pakke-navn Vanlig at den inneholder «action» «no.hiof.larseknu.action.do_work» Finnes mange innebygde Intent har ikke flere enn en action Intent filter inneholder null eller flere actions

Action matching Case sensitiv sammenligning av strengene no.hiof.larseknuaction.do_work = no.hiof.larseknu.action.do_work no.hiof.larseknu.action.do_work!= no.hiof.larseknu.action.do_work Intent action må matche en action i intent filter Filter uten noen action, vil aldri matche noe intent Intent uten action-verdi, vil matche alle filtere med minst én action.

Ekstra informasjon til Intents Inneholder navn og en verdi Støtter «fornavn» -> «Lars Emil» Stringer og de fleste primitive datatyper Arrayer Java Serializable og Android Parcelable Extras blir ikke tatt med i testene

Category Category deler kvalifiserte komponenter opp i undergrupper Action er en string verdi Bruker ofte pakke-navn Vanlig og inneholde «category» «com.capgemini.category.view» Finnes mange innebygde Intent har ingen eller flere category-verdier Intent filter inneholder ingen eller flere category-verdier

Category matching Case sensitive sammenligning av strenger Alle category i intentet må være i intent filteret Intent uten category matcher alle Category kan kreves uten at den finnes i en intent CATEGORY_LAUNCHER Kreves for at appen skal launches

Data Type data Mime URI (Uniform Resource Identifier) Hvor dataen befinner seg En intent har ingen eller ett data objekt Filter har ingen eller flere data tester Kan inneholde wildcards

URI Scheme Host Port Path http://www.hiof.no:80/android

Data matching Generelle regler Mime type og URI er case-sensitive Det må finnes en forekomst av intent data i intent filter