Android components & manifest
Ilio Catallo, Eleonora Ciceri – Politecnico di Milano
ilio.catallo@polimi.it, eleonora.cicer...
Principles
2
Android applications
¤ An Android application is made of different components
¤ Namely:
¤ Activities (and associated Vi...
Android applications
¤ An Android application is made of different components
¤ Namely:
¤ Activities (and associated Vi...
Principles
5
activity
application
¤ An activity is a single, focused thing that the user
can do
¤ Each activity is assoc...
Principles
6
view
activity
application
¤ The view is the basic building block for user
interface components
¤ Responsibl...
Principles
7
view
activity
application
activity
view
¤ Most basic applications are made of just one Activity
¤ However, ...
Principles
8
intent
view
activity
application
activity
view
¤ Intents are messages that are passed between
components (e....
Principles
9
intent
view
activity
application
activity
view
9
view
activity
third-party
application
¤ What if a useful Ac...
Principles
10
intent
view
activity
application
view
activity
third-party
application
activity
view intent
¤ By casting an...
Remaining components
¤ The remaining components play less intuitive roles
¤ Namely:
¤ Services implement long-running, ...
Composing the puzzle
12
Composing the puzzle
¤ Each Android application includes a manifest file
(AndroidManifest.xml), which describes
¤ each s...
Manifest structure: manifest node
14
uses-sdk
application
activity
service
provider
receiver
intent-filter
¤ <manifest> i...
Manifest structure: manifest node
15
uses-sdk
application
activity
service
provider
receiver
intent-filter
¤ Attributes
¤...
Manifest structure: uses-sdk node
16
uses-sdk
application
activity
service
provider
receiver
intent-filter
¤ <uses-sdk> l...
Manifest structure: uses-sdk node
17
uses-sdk
application
activity
service
provider
receiver
intent-filter
¤ Attributes
¤...
Manifest structure: application node
18
uses-sdk
application
activity
service
provider
receiver
intent-filter
¤ <applicat...
Manifest structure: application node
19
uses-sdk
application
activity
service
provider
receiver
intent-filter
¤ <applicat...
Manifest structure: application node
20
uses-sdk
application
activity
service
provider
receiver
intent-filter
¤ Attribute...
Manifest structure: activity node
21
uses-sdk
application
activity
service
provider
receiver
intent-filter
¤ <activity> i...
Manifest structure: activity node
¤ Attributes
¤ android:name: the name of the
class that implements the activity
(shoul...
Manifest structure: intent-filter node
23
uses-sdk
application
activity
service
provider
receiver
intent-filter
¤ <intent...
Manifest structure: intent-filter node
24
uses-sdk
application
activity
service
provider
receiver
intent-filter
¤ Sub-nod...
Manifest structure: service node
25
uses-sdk
application
activity
service
provider
receiver
intent-filter
¤ <service> dec...
Manifest structure: service node
26
uses-sdk
application
activity
service
provider
receiver
intent-filter
¤ Attributes
¤...
Manifest structure: provider node
27
uses-sdk
application
activity
service
provider
receiver
intent-filter
¤ <provider> d...
Manifest structure: provider node
28
uses-sdk
application
activity
service
provider
receiver
intent-filter
¤ Attributes
¤...
Manifest structure: receiver node
29
uses-sdk
application
activity
service
provider
receiver
intent-filter
¤ <receiver> d...
Manifest structure: receiver node
30
uses-sdk
application
activity
service
provider
receiver
intent-filter
¤ Attributes
¤...
TakeNotes:
AndroidManifest.xml
31
Android 5.0
(Lollipop)
Android 2.2
(Froyo)
<manifest xmlns:android="http://schemas.andro...
TakeNotes:
AndroidManifest.xml
32
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="it.polimi....
TakeNotes:
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="it.polimi.ma....
Android application structure
¤ Programming an Android application involves:
¤ Writing the business logic code
¤ Provid...
Android Project File Structure
35
src/
build/
Source code that is auto-generated by Android Studio
libs/
Precompiled third...
Create a Hello World application
36
Hello World application – Step 1
37
Specify the application name...
... and the company name (which automatically
defines ...
Hello World application – Step 2
38
Specify the platform on which the application will run...
... and the supported API
Hello World application – Step 3
39
Select this to create a
standard, empty activity
Hello World application – Step 4
40
Give a name to the activity (i.e., the
Java class implementing the activity)
Android Studio:
Hello World application
41
Project structure
Code
Application
preview
References
42
References
¤ Reto Meier, Professional Android 4 Application
development
3rd Ed., Wrox
43
Upcoming SlideShare
Loading in...5
×

Android Components & Manifest

548

Published on

Introduction to the basic aspects of application development in Android. The basic components, e.g., Activity and View, are introduced along with the different configuration files, e.g., AndroidManifest.xml.

The source code is available at https://github.com/iliocatallo/takenotes

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
548
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Android Components & Manifest"

  1. 1. Android components & manifest Ilio Catallo, Eleonora Ciceri – Politecnico di Milano ilio.catallo@polimi.it, eleonora.ciceri@polimi.it
  2. 2. Principles 2
  3. 3. Android applications ¤ An Android application is made of different components ¤ Namely: ¤ Activities (and associated Views) ¤ Broadcast receivers ¤ Services ¤ Persistence Providers 3
  4. 4. Android applications ¤ An Android application is made of different components ¤ Namely: ¤ Activities (and associated Views) ¤ Broadcast receivers ¤ Services ¤ Persistence Providers 4
  5. 5. Principles 5 activity application ¤ An activity is a single, focused thing that the user can do ¤ Each activity is associated with a window in which to draw the user interface
  6. 6. Principles 6 view activity application ¤ The view is the basic building block for user interface components ¤ Responsible for drawing and event handling ¤ Examples: button, textbox
  7. 7. Principles 7 view activity application activity view ¤ Most basic applications are made of just one Activity ¤ However, typical Android apps comprise multiple Activities
  8. 8. Principles 8 intent view activity application activity view ¤ Intents are messages that are passed between components (e.g., Activities) ¤ The most significant use of Intents is launching new Activities
  9. 9. Principles 9 intent view activity application activity view 9 view activity third-party application ¤ What if a useful Activity is part of a third-party application?
  10. 10. Principles 10 intent view activity application view activity third-party application activity view intent ¤ By casting an intent, third-party activities can be used as if they were part of our app
  11. 11. Remaining components ¤ The remaining components play less intuitive roles ¤ Namely: ¤ Services implement long-running, background operations ¤ Persistence providers supply access to data managed by the application ¤ Broadcast receivers enable applications to receive intents that are broadcast by the system or by other applications 11
  12. 12. Composing the puzzle 12
  13. 13. Composing the puzzle ¤ Each Android application includes a manifest file (AndroidManifest.xml), which describes ¤ each single component ¤ the interaction between different components ¤ Specifically, the manifest defines: ¤ the application metadata ¤ the application requirements ¤ the application structure and components ¤ The manifest is stored in the root of the project hierarchy 13
  14. 14. Manifest structure: manifest node 14 uses-sdk application activity service provider receiver intent-filter ¤ <manifest> is the root node of the AndroidManifest.xmlfile <manifest xmlns:android= “http://schemas.android.com/apk/res/android” package="it.polimi.mad” android:versionCode="1" android:versionName="0.9 Beta" android:installLocation="preferExternal”> ... </manifest>
  15. 15. Manifest structure: manifest node 15 uses-sdk application activity service provider receiver intent-filter ¤ Attributes ¤ versionCode: an integer representing the version of the application code ¤ versionName: a string representing the release version of the application code, as shown to users ¤ installLocation: the default install location for the application
  16. 16. Manifest structure: uses-sdk node 16 uses-sdk application activity service provider receiver intent-filter ¤ <uses-sdk> lets you express an application’s compatibility with one or more versions of the Android platform ¤ This tag specifies the version of the APIs, NOT the SDK <uses-sdk android:minSdkVersion=“8” android:targetSdkVersion=”21” />
  17. 17. Manifest structure: uses-sdk node 17 uses-sdk application activity service provider receiver intent-filter ¤ Attributes ¤ android:minSdkVersion: an integer designating the minimum API Level required for the application to run ¤ android:targetSdkVersion: an integer designating the API Level the application targets
  18. 18. Manifest structure: application node 18 uses-sdk application activity service provider receiver intent-filter ¤ <application> defines the application metadata ¤ Example: icon, title ¤ It acts as a container for activities, services, content providers and broadcast receivers <application android:icon="@drawable/icon” android:name= ”.MyApp" android:debuggable="true"> ... </application>
  19. 19. Manifest structure: application node 19 uses-sdk application activity service provider receiver intent-filter ¤ <application> defines the application metadata ¤ Example: icon, title ¤ It acts as a container for activities, services, content providers and broadcast receivers <application android:icon="@drawable/icon” android:name= ”.MyApp" android:debuggable="true"> ... </application> . is used as a shorthand for the application’s package name
  20. 20. Manifest structure: application node 20 uses-sdk application activity service provider receiver intent-filter ¤ Attributes ¤ android:icon: reference to a resource containing the application icon image ¤ android:name: the fully qualified name for the class inheriting from Application* * The subclass is optional. In the absence of a subclass, an instance of the base Applicationclass is used
  21. 21. Manifest structure: activity node 21 uses-sdk application activity service provider receiver intent-filter ¤ <activity> is required for every Activity within the application <activity android:name=".MyActivity” android:label="@string/activity_name"> ... </activity>
  22. 22. Manifest structure: activity node ¤ Attributes ¤ android:name: the name of the class that implements the activity (should be a fully qualified class name) ¤ android:label: a user-readable label for the activity, displayed when the activity is represented to the user (often along with the activity icon) 22 uses-sdk application activity service provider receiver intent-filter
  23. 23. Manifest structure: intent-filter node 23 uses-sdk application activity service provider receiver intent-filter ¤ <intent-filter>specifies the types of intents that an activity, service, or broadcast receiver can respond to <intent-filter> <action android:name="android. intent.action.MAIN”/> <category android:name="android. intent.category.LAUNCHER”/> </intent-filter>
  24. 24. Manifest structure: intent-filter node 24 uses-sdk application activity service provider receiver intent-filter ¤ Sub-nodes ¤ action: the name of the action ¤ category: adds a category name to an intent filter. ¤ Some standard actions and categories are defined in the Intent class ¤ ACTION_MAIN: starts up as the initial activity of a task (no data input and no returned output) ¤ CATEGORY_LAUNCHER: the activity must be invoked by the launcher
  25. 25. Manifest structure: service node 25 uses-sdk application activity service provider receiver intent-filter ¤ <service> declares a Service class implementing long-running background operations <service android:name=".MyService"> ... </service>
  26. 26. Manifest structure: service node 26 uses-sdk application activity service provider receiver intent-filter ¤ Attributes ¤ android:name: qualifiedname of the class implementing the service
  27. 27. Manifest structure: provider node 27 uses-sdk application activity service provider receiver intent-filter ¤ <provider> declares a content provider component, supplying access to data managed by the application <provider android:name=".MyContentProvider" android:authorities=“it.polimi. mad.contentprovider"/>
  28. 28. Manifest structure: provider node 28 uses-sdk application activity service provider receiver intent-filter ¤ Attributes ¤ android:name: the fully qualified name of the class that implements the content provider ¤ android:authorities: a list of one or more URIs that identify data offered by the content provider ¤ To avoid conflicts with content providers in other apps, the URIs should use a Java-style package naming convention
  29. 29. Manifest structure: receiver node 29 uses-sdk application activity service provider receiver intent-filter ¤ <receiver> declares a broadcast receiver as one of the application's components ¤ Broadcast receivers enable applications to receive intents that are broadcast by the system or by other applications <receiver android:name=".MyIntentReceiver"> <intent-filter> <action android:name=”it.polimi. mad.mybroadcastaction”/> </intent-filter> </receiver>
  30. 30. Manifest structure: receiver node 30 uses-sdk application activity service provider receiver intent-filter ¤ Attributes ¤ android:name: the fully qualified name of the class that implements the broadcast receiver
  31. 31. TakeNotes: AndroidManifest.xml 31 Android 5.0 (Lollipop) Android 2.2 (Froyo) <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="it.polimi.ma.takenotes" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name="it.polimi.ma.takenotes.ToDoListActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
  32. 32. TakeNotes: AndroidManifest.xml 32 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="it.polimi.ma.takenotes" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name="it.polimi.ma.takenotes.ToDoListActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> One single activity, implemented by this class
  33. 33. TakeNotes: AndroidManifest.xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="it.polimi.ma.takenotes" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name="it.polimi.ma.takenotes.ToDoListActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 33 Resource URI (we will see in a while what it means…)
  34. 34. Android application structure ¤ Programming an Android application involves: ¤ Writing the business logic code ¤ Providing the resources required for the user interface ¤ User interface definition (via XML) ¤ Icons ¤ Localized strings ¤ Providing the multimedia content (i.e., assets), which will be used by the application ¤ Video / photo collections 34
  35. 35. Android Project File Structure 35 src/ build/ Source code that is auto-generated by Android Studio libs/ Precompiled third-party libraries (JAR archives) that you want to use in your app assets/ Other media that you want to use in your app (e.g., videos, sounds) res/ GUI layouts, icons, menus and so forth java/ Source code that you write for your app main/ source code and resources app/
  36. 36. Create a Hello World application 36
  37. 37. Hello World application – Step 1 37 Specify the application name... ... and the company name (which automatically defines the package name)
  38. 38. Hello World application – Step 2 38 Specify the platform on which the application will run... ... and the supported API
  39. 39. Hello World application – Step 3 39 Select this to create a standard, empty activity
  40. 40. Hello World application – Step 4 40 Give a name to the activity (i.e., the Java class implementing the activity)
  41. 41. Android Studio: Hello World application 41 Project structure Code Application preview
  42. 42. References 42
  43. 43. References ¤ Reto Meier, Professional Android 4 Application development 3rd Ed., Wrox 43

×