Intents

evasiveabstractedMobile - sans fil

14 déc. 2013 (il y a 3 années et 7 mois)

190 vue(s)

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.


com.example.project.app.FreneticActivity

Package name

Fully Qualified Class Name

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);