Книга: Beginning Android
Stating Your Intent(ions)
Stating Your Intent(ions)
All Android components that wish to be notified via intents must declare intent filters, so Android knows which intents should go to that component. To do this, you need to add intent-filter
elements to your AndroidManifest.xml
file.
All of the example projects have intent filters defined, courtesy of the Android application-building script (activityCreator
or the IDE equivalent). They look something like this:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.commonsware.android.skeleton">
<application>
<activity android:name=".Now" android:label="Now">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Note the intent-filter
element under the activity
element. Here, we declare that this activity:
• is the main activity for this application
• is in the LAUNCHER
category, meaning it gets an icon in the Android main menu
Because this activity is the main one for the application, Android knows this is the component it should launch when somebody chooses the application from the main menu.
You are welcome to have more than one action or more than one category in your intent filters. That indicates that the associated component (e.g., activity) handles multiple different sorts of intents.
More than likely, you will also want to have your secondary (non-MAIN) activities specify the MIME type of data they work on. Then, if an intent is targeted for that MIME type — either directly, or indirectly by the Uri referencing something of that type — Android will know that the component handles such data.
For example, you could have an activity declared like this:
<activity android:name=".TourViewActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/vnd.commonsware.tour" />
</intent-filter>
</activity>
This activity will get launched by an intent requesting to view a Uri
representing a vnd.android.cursor.item/vnd.commonsware.tour
piece of content. That intent could come from another activity in the same application (e.g., the MAIN activity for this application) or from another activity in another Android application that happens to know a Uri
that this activity handles.
- CHAPTER 23 Creating Intent Filters
- 8.5.2 Typical Condition Variable Operations
- Dedications
- Conventions used in this document
- Chapter 5. Preparations
- Chapter 12. Debugging your scripts
- Appendix A. Detailed explanations of special commands
- Appendix B. Common problems and questions
- Appendix D. TCP options
- IP filtering terms and expressions
- What NAT is used for and basic terms and expressions
- 9.1.1. Partitions