1、Intent的概念及作用
Intent——意图,它可以带有数据,在Android设备上的任何应用程序组件间相互作用,将不同组件连在一起的桥梁。
Intent作用:
- Intent最常用在启动新的Activity,不管是显式的(通过指定类来加载)还是隐式的(通过请求在一块数据上执行的动作)。
- Intent还可以用来广播消息,然后使用Broadcast Receiver来监听并响应这些Intent。
- 使用Intent来传播动作,比如通过我们的程序中打电话。
2、Intent-filter的概念机作用
Intent-filter用来注册Activity、Service、Broadcast Receiver具有在某种数据上处理一个动作的能力。
当一个应用程序为了向Android说明它有为某种数据或者其他应用程序组件提供处理动作的能力时,它需要在manifest中注册为一个Intent处理者。
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="LiB.PickContacts" android:versionCode="1" android:versionName="1.0"> 4 <uses-sdk android:minSdkVersion="9" /> 5 <uses-permission android:name="android.permission.CALL_PHONE" /> 6 <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 7 <uses-permission android:name="android.permission.READ_CONTACTS" /> 8 9 10 <application android:icon="@drawable/icon" android:label="@string/app_name"> 11 <activity android:name=".Android_PickContactsActivity" 12 android:label="@string/app_name"> 13 <!--注册当前的Activity为默认启动的页面 --> 14 <intent-filter> 15 <action android:name="android.intent.action.MAIN" /> 16 <category android:name="android.intent.category.LAUNCHER" /> 17 </intent-filter> 18 </activity> 19 <activity android:name=".ChileActivity" android:label="@string/app_name"> 20 <!-- 注册当前的Activity具有处理Action_picks动作的能力 --> 21 <intent-filter> 22 <action android:name="Action_picks" /> 23 <category android:name="android.intent.category.DEFAULT" /> 24 <!-- <data android:path="contacts" android:scheme="content" /> --> 25 </intent-filter> 26 </activity> 27 </application> 28 </manifest>
❑ action
使用android:name特性来指定对响应的动作名。动作名必须是独一无二的字符串,所以,一个好的习惯是使用基于Java包的命名方式的命名系统。
❑ category
使用android:category属性用来指定在什么样的环境下动作才被响应。每个Intent Filter标签可以包含多个category标签。你可以指定自定义的种类或使用 Android提供的标准值,如下所示:
❑ ALTERNATIVE
你将在这章的后面所看到的,一个Intent Filter的用途是使用动作来帮忙填入上下文菜单。ALTERNATIVE种类指定,在某种数据类型的项目上可以替代 默认执行的动作。例 如,一个联系人的默认动作时浏览它,替代的可能是去编辑或删除它。
❑ SELECTED_ALTERNATIVE
与ALTERNATIVE类似,但ALTERNATIVE总是使用下面所述的Intent解析来指向单一的动作。SELECTED_ALTERNATIVE在需要一个可能性列表时使用。
❑ BROWSABLE
指定在浏览器中的动作。当Intent在浏览器中被引发,都会被指定成BROWSABLE种类。
❑ DEFAULT
设置这个种类来让组件成为Intent Filter中定义的data的默认动作。这对使用显式Intent启动的Activity来说也是必要的。
❑ GADGET
通过设置GADGET种类,你可以指定这个Activity可以嵌入到其他的Activity来允许。
❑ HOME
HOME Activity是设备启动(登陆屏幕)时显示的第一个Activity。通过指定Intent Filter为HOME种类而不指定动作的话,你正在将其设为本地home画面的替代。
❑ LAUNCHER
使用这个种类来让一个Activity作为应用程序的启动项。
❑ data
data标签允许你指定组件能作用的数据的匹配;如果你的组件能处理多个的话,你可以包含多个条件。你可以使用下面属性的任意组合来指定组件支持的数据:
❑ android:host
指定一个有效的主机名(例如,com.google)。
❑ android:mimetype
允许你设定组件能处理的数据类型。例如,<type android:value=”vnd.android.cursor.dir/*”/>能匹配任何Android游标。
❑ android:path
有效地URI路径值(例如,/transport/boats/)。
❑ android:port
特定主机上的有效端口。
❑ android:scheme
需要一个特殊的图示(例如,content或http)。