Top Banner
Android Lover since 2008 cofounder bubiloop cofounder android.es Barcelona GTUG Leader Android Dev at Fever Head Mobile Dept. at ASMWS Computer Science at LaSalle Israel Ferrer
23
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Intents are Awesome

Android Lover since 2008cofounder bubiloopcofounder android.es

Barcelona GTUG LeaderAndroid Dev at Fever

Head Mobile Dept. at ASMWS Computer Science at LaSalle

Israel Ferrer

Page 2: Intents are Awesome

INTENTS ARE AWESOME

really, trust me!

Israel Ferrer14th March

Page 3: Intents are Awesome

WHAT ARE INTENTS

?

Page 4: Intents are Awesome

flickr : chinesetealover

intent |inˈtent| noun intention or purpose: with alarm she realized his intent | a real intent to cut back on social programs.

Page 5: Intents are Awesome

OK... WHAT DOES THIS REALLY MEAN?

Page 6: Intents are Awesome

Open new ScreensShare with other apps

Open Camera to take a photoOpen file managerOpen the browser

Open QR Code Scanner...

Page 7: Intents are Awesome

HOW INTENTS WORK

?

Page 8: Intents are Awesome

Explicit Intent

Implicit Intent

theatricalintelligence

Page 9: Intents are Awesome

EXPLICIT INTENTS

• Explicit Intent names the component which should be called by the Android system, using the Java class as identifier.

• Used to open new activities in the same app.

final Intent intent=new Intent(this, LoginActivity.class);startActivity(intent);

Page 10: Intents are Awesome

IMPLICIT INTENTS• Implicit intent specifies the action to perform and optionally an

URI for the action.

• Implicit Intent is managed by Android Intent resolution, which maps the intent to a Service, Activity or Broadcasts Receiver

• This resolution is done by matching intent with intentFilters of every app.

• If more than one app can handle the action, the user will have to choose.

final Intent intent=new Intent(Intent.ACTION_VIEW, "http://mylookout.com");

Page 11: Intents are Awesome

SHARE DATA

• Intents can contain aditional data by using putExtra() method

• intent.putExtra(EXTRA_CONVERSATION, conversation);

• the receiving component can obtain this data by getExtras() methodBundle extras = getIntent().getExtras();String conversation = extras.getString(EXTRA_CONVERSATION);if (conversation != null) { // Do something with the data}

Page 12: Intents are Awesome

INTENT FILTERS

• An IntentFilter specifies the types of Intent that an activity, service, or broadcast receiver can respond to. IntentFilters are declared in the Android Manifest.

• There are 3 pieces of information used for this resolution:

• Action

• Type: mymeType or scheme.

• Category: need to support DEFAULT to be found by startActivity.

Page 13: Intents are Awesome

INTENT FILTERS

<activity android:name=".BrowserActivitiy" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="http"/> </intent-filter></activity>

final Intent intent=new Intent(Intent.ACTION_VIEW, "http://mylookout.com");

Intent

IntentFilter

Page 14: Intents are Awesome

• Explicit: choose the component to call.

• Implicit: is a general intent with action and optionally URI. The Intent resolution call the component that can handle it.

• Intents can share data between components and apps.

TO SUM UP

Page 15: Intents are Awesome

HOW TO

USE INTENTS

?

Page 16: Intents are Awesome

• Reuse code and functionality from 3rd party apps

• ACTION_SEND

• ACTION_VIEW

• geo:lat,lon to open map

• http://host to open browser

• tel:number to open dialer

Page 17: Intents are Awesome

•Define a set of intents to handle web addresses.

• Example: Twitter

•Define IntentFilter to handle twitter urls

<activity android:name=".UrlHandleActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:host="www.twitter.com" android:scheme="http" /> </intent-filter></activity>

Page 18: Intents are Awesome

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Uri uri = getIntent().getData(); if (null == uri) { // Shouldn't happen. Handle errors. finish(); return; }

String path = uri.getPath(); for (Pair<String, Class> pair : DISPATCH_MAP) { if (path.matches(pair.mFirst)) { Intent intent = new Intent(this, pair.mSecond); intent.setData(uri); startActivity(intent); finish(); return; } } finish(); } private static final List<Pair<String, Class>> DISPATCH_MAP = new LinkedList<Pair<String, Class>>();static { DISPATCH_MAP.add(new Pair<String, Class>("(.*)/status$", TweetActivity.class)); DISPATCH_MAP.add(new Pair<String, Class>("/another/path", ProfileActivity.class));}

• Check the URL path to fire target Activity

Page 19: Intents are Awesome

• Expose intents to 3rd party apps. Example: Lookout public backup intent.

Page 20: Intents are Awesome

CONCLUSIONS

Page 21: Intents are Awesome

A core component of Android.A way to reuse functionality between apps.

The glue between activities.The mashup concept into a mobile platformIntents are Awesome for users & developers

Page 22: Intents are Awesome

QUESTIONS?

Page 23: Intents are Awesome