Intents are Awesome

1,278 views
1,183 views

Published on

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

No Downloads
Views
Total views
1,278
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
30
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Intents are Awesome

  1. 1. Israel Ferrer Android Lover since 2008 cofounder bubiloop cofounder android.es Barcelona GTUG Leader Android Dev at FeverHead Mobile Dept. at ASMWS Computer Science at LaSalle
  2. 2. INTENTSARE AWESOME really, trust me! Israel Ferrer 14th March
  3. 3. WHAT AREINTENTS ?
  4. 4. intent |inˈtent| noun intention or purpose:with alarm she realized hisintent | a real intent to cut backon social programs. flickr: chinesetealover
  5. 5. OK... WHAT DOES THIS REALLY MEAN?
  6. 6. Open new Screens Share with other appsOpen Camera to take a photo Open file manager Open the browser Open QR Code Scanner ...
  7. 7. HOW INTENTSWORK ?
  8. 8. Explicit IntentImplicit Intent theatricalintelligence
  9. 9. 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);
  10. 10. IMPLICIT INTENTS• Implicitintent 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• Thisresolution is done by matching intent with intentFilters of every app.• Ifmore than one app can handle the action, the user will have to choose. final Intent intent=new Intent(Intent.ACTION_VIEW, "http://mylookout.com");
  11. 11. 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() method Bundle extras = getIntent().getExtras(); String conversation = extras.getString(EXTRA_CONVERSATION); if (conversation != null) { // Do something with the data }
  12. 12. INTENT FILTERS• AnIntentFilter 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.
  13. 13. INTENT FILTERSIntentfinal Intent intent=new Intent(Intent.ACTION_VIEW, "http://mylookout.com");IntentFilter<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>
  14. 14. TO SUM UP• Explicit: choose the component to call.• Implicit: isa 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.
  15. 15. HOW TOUSEINTENTS ?
  16. 16. • 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
  17. 17. • 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>
  18. 18. • Check the URL path to fire target Activity public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Uri uri = getIntent().getData(); if (null == uri) { // Shouldnt 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)); }
  19. 19. • Exposeintents to 3rd party apps. Example: Lookout public backup intent.
  20. 20. CONCLUSIONS
  21. 21. 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
  22. 22. QUESTIONS?

×