Application Fundamentals--Intent 过滤器

Intent 过滤器

Intent 对象可以显式指定目标组件.一旦显式指定了目标组件,Android 操作系统直接根据指定的目标组件名在AndroidManifest.xml文件中查找该组件声明,找到之后立即激活该组件。如果Intent 对象没有显式指定目标组件, Android 操作系统必须从AndroidManifest.xml文件中的所有intent过滤器中定位到一个最佳匹配的intent声明. 匹配过程事实上是把该 Intent 对象与 intent filters 中定义的intent元素做比对,一旦比对成功,Intent 过滤器立即通知Android 操作系统该过滤器所归属的组件可以响应该intent对象的操作请求,下面是是两个过滤器元素的相关定义:

<?xml version="1.0" encoding="utf-8"?>
<manifest . . . >
    <application . . . >
        <activity android:name="com.example.project.FreneticActivity"
                  android:icon="@drawable/small_pic.png"
                  android:label="@string/freneticLabel"
                  . . .  >
            <intent-filter . . . >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter . . . >
                <action android:name="com.example.project.BOUNCE" />
                <data android:mimeType="image/jpeg" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        . . .
    </application>
</manifest>

第一个过滤器元素 — 包含 action 属性= "android.intent.action.MAIN" 和category 属性= "android.intent.category.LAUNCHER" — 这两个属性定义表示的含义是. 该 activity 应该显示在application 发射台上,用户可以在发射台上启动该应用 . 换句话说该 activity 是该应用程序的启动入口。

第二个过滤器元素同样包含了一个action属性,属性值是自定义的,表示该 activity 可以处理特定类型的数据.

AndroidManifest.xml文件中的组件元素可以有任意个intent filters,每个过滤器都声明了该组件的一种不同的能力. 如果一个组件没有定义过滤器元素,那么该组件只能被显式定义了组件名的intent对象激活。

For a broadcast receiver that's created and registered in code, the intent filter is instantiated directly as an IntentFilter object. All other filters are set up in the manifest.

For more on intent filters, see a separate document, Intents and Intent Filters.

你可能感兴趣的:(android,xml,UP)