Important:
Chrome will be removing support for Chrome Apps on Windows, Mac, and
Linux. Chrome OS will continue to support Chrome Apps. Additionally,
Chrome and the Web Store will continue to support extensions on all
platforms.
Read the announcement and learn more about
migrating your app.

Connect Apps with Web Intents

Web Intents
allow your application to quickly communicate
with other applications on the user's system and inside their browser.
Your application can register to handle specific user actions
such as editing images via the manifest.json;
your application can also invoke actions to be handled by other applications.

Chrome Apps use Web Intents as their primary mechanism for inter-app
communication.

Unlike extensions and hosted apps, Chrome applications do not
need a "href" attribute in the manifest declaration, this is
because Chrome Apps have a single entry point for
launch - the onLaunched event.

Handling content types

Your application can be the user's preferred choice for handling a file type.
For example, your application could handle viewing images or viewing pdfs.
You must supply the intent in the manifest
and use the "http://webintents.org/view" action:

To be able declare your application's ability to view RSS and ATOM
feeds, you would add the following to your manifest.

Launching an app with a file

If your app handles the view intent,
it is possible to launch it from the command line with a file as a parameter.

chrome.exe --app-id [app_id] [path_to_file]

This will implicity launch your application with an intent payload populated
with the action set to "http://webintents.org/view", the type set to the
mime-type of the file and the data as a FileEntry object.

Manipulating the file

When your application is launched with a file as the parameter
on the command-line,
the intent.data property is a FileEntry.
This is really cool because now you have a direct reference back to the physical
file on the disk,
and you can write data back to it.

Handling Errors and Exceptions

If your service application needs to signal to the client application
that an unrecoverable error has occurred,
then your application will need
to call postError on the intent object.
This will signal to the client’s onError callback
that something has gone wrong.