Activity Action: Allow the user to select a particular kind of data and return it. This is different than Intent.ActionPick in that here we just say what kind of data is desired, not a URI of existing data from which the user can pick. An ACTION_GET_CONTENT could allow the user to create the data as it runs (for example taking a picture or recording a sound), let them browse over the web and download the desired data, etc.
There are two main ways to use this action: if you want a specific kind of data, such as a person contact, you set the MIME type to the kind of data you want and launch it with Context.StartActivity(Intent). The system will then launch the best application to select that kind of data for you.
You may also be interested in any of a set of types of content the user can pick. For example, an e-mail application that wants to allow the user to add an attachment to an e-mail message can use this action to bring up a list of all of the types of content the user can attach.
In this case, you should wrap the GET_CONTENT intent with a chooser (through Intent.CreateChooser(Intent, Java.Lang.ICharSequence)), which will give the proper interface for the user to pick how to send your data and allow you to specify a prompt indicating what they are doing. You will usually specify a broad MIME type (such as image/* or */*), resulting in a broad range of content types the user can select from.
When using such a broad GET_CONTENT action, it is often desirable to only pick from data that can be represented as a stream. This is accomplished by requiring the Intent.CategoryOpenable in the Intent.
Callers can optionally specify Intent.ExtraLocalOnly to request that the launched content chooser only returns results representing data that is locally available on the device. For example, if this extra is set to true then an image picker should not show any pictures that are available from a remote server but not already on the local device (thus requiring they be downloaded when opened).
If the caller can handle multiple returned items (the user performing multiple selection), then it can specify Intent.ExtraAllowMultiple to indicate this.
Input: Intent.Type is the desired MIME type to retrieve. Note that no URI is supplied in the intent, as there are no constraints on where the returned data originally comes from. You may also include the Intent.CategoryOpenable if you can only accept data that can be opened as a stream. You may use Intent.ExtraLocalOnly to limit content selection to local data. You may use Intent.ExtraAllowMultiple to allow the user to select multiple items.
Output: The URI of the item that was picked. This must be a content: URI so that any receiver can access it.