• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Intents are Awesome
 

Intents are Awesome

on

  • 1,234 views

 

Statistics

Views

Total Views
1,234
Views on SlideShare
1,234
Embed Views
0

Actions

Likes
1
Downloads
27
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Intents are Awesome Intents are Awesome Presentation Transcript

    • 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
    • INTENTSARE AWESOME really, trust me! Israel Ferrer 14th March
    • WHAT AREINTENTS ?
    • intent |inˈtent| noun intention or purpose:with alarm she realized hisintent | a real intent to cut backon social programs. flickr: chinesetealover
    • OK... WHAT DOES THIS REALLY MEAN?
    • Open new Screens Share with other appsOpen Camera to take a photo Open file manager Open the browser Open QR Code Scanner ...
    • HOW INTENTSWORK ?
    • Explicit IntentImplicit Intent theatricalintelligence
    • 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);
    • 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");
    • 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 }
    • 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.
    • 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>
    • 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.
    • HOW TOUSEINTENTS ?
    • • 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
    • • 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>
    • • 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)); }
    • • Exposeintents to 3rd party apps. Example: Lookout public backup intent.
    • CONCLUSIONS
    • 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
    • QUESTIONS?