Intents

advertisement
Intents
Fancy pants definition of Intent
A passive data structure holding an abstract
description of an operation to be performed or a
description of something that has happened and
is being announced.
Regular pants definition
• Intents are asynchronous messages which
allow Android components to request
functionality from other components of the
Android system.
• Allows developers to leverage the capability of
other apps
Using Intents
• Intents are sent to the Android system via
the startActivity().
• Depending on how the Intent was constructed,
the Android system will run an receiver and
determine possible components that can be
started.
• If several components have registered for the
same intents the user can decide which
component should be started.
How we’ve used Intents so far
• An Intent object is passed
to Context.startActivity() or
Activity.startActivityForResult() to launch an
activity or get an existing activity to do
something new.
• It can also be passed to Activity.setResult() to
return information to the activity that
called startActivityForResult().
Explicit vs Implicit Intents
• Explicit intents explicitly define the
component which should be called by the
Android system by using the Java class as the
identifier.
• Implicit intents specify the action which
should be performed and optional data which
provides data for the action.
Intents
• Intents can contain
– Component Name
– Action
– Data
Intents : Component Name
• The name of the component that should
handle the intent.
• The name of the component should be a fully
qualified class name of the target component
its package name.
Package name
Fully Qualified Class Name
com.example.project.app.FreneticActivity
Intents : Component Name
• Explicit Intents need a component name
• Implicit Intents do NOT need a component
name
Intent : Action
• A string naming the action to be performed
Intent : Data
• The data to operate on, such as a person
record in the contacts database, expressed as
a Uri.
Examples of Action/Data pairs
•
ACTION_VIEW content://contacts/people/1 -- Display information about the
person whose identifier is "1".
•
ACTION_DIAL content://contacts/people/1 -- Display the phone dialer with the
person filled in.
•
ACTION_VIEW tel:123 -- Display the phone dialer with the given number filled in.
Note how the VIEW action does what is considered the most reasonable thing for
a particular URI.
•
ACTION_DIAL tel:123 -- Display the phone dialer with the given number filled in.
•
ACTION_EDIT content://contacts/people/1 -- Edit information about the person
whose identifier is "1".
•
ACTION_VIEW http://www.google.com -- Display the browser with the given url
filled in.
Example Intents : Long Way
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.smu.edu"));
startActivity(intent);
Example Intents : Compact Way
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://www.google.com"));
startActivity(intent);
Show Phone Number in Dialer App
////Show Phone number in Dialer App
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("tel:2147681234"));
startActivity(intent);
Google Search
////Open browser and perform a google search
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, "SMU");
startActivity(intent);
Open Address in Google Maps
//Open Google Maps and load a map for a specific geo location
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("geo:32.84453,-96.78534"));
startActivity(intent);
Compose an Email
//Compose an email with subject and body filled in
Intent intent = new Intent(Intent.ACTION_SENDTO,
Uri.parse("mailto:?subject=" +
Uri.encode("Mixed Berry Recipe") + "&body=" + Uri.encode("I
found this awesome recipe")));
startActivity(intent);
Choose an Activity to share data with
//Send data to any app that accepts text/plain mime type
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject Here");
intent.putExtra(Intent.EXTRA_TEXT, "Body Here");
//This will create a chooser pop-up that allows the user to
select from a list of options for how they
//want to handle the intent (which app to use).
startActivity(Intent.createChooser(intent, "Share this recipe
with")); //Add special text to chooser pop-up
Edit Contact
//Edit a contact in your contacts list
Intent intent = new Intent(Intent.ACTION_EDIT,
Uri.parse("content://contacts/people/1"));
startActivity(intent);
Download