Intent隐式激活

来源:互联网 发布:伴随矩阵怎么求 编辑:程序博客网 时间:2024/05/21 09:44

Intent对象在Android应用开发中起到很大的作用,例如激活组件(Activity,Service 等组件)或者携带数据的功能,相信大家在开发中经常会用到这些功能,Android中的意图分为显式意图隐式意图,显式意图大家应该用得比较多,但隐式意图在开发过程中也是必不可少的。

首先,我们在Manifest.xml配置文件中配置intent-filter过滤器节点:

<?xml version="1.0" encoding="utf-8"?>  <manifest xmlns:android="http://schemas.android.com/apk/res/android"      package="com.andyidea.intentdemo"      android:versionCode="1"      android:versionName="1.0" >      <uses-sdk android:minSdkVersion="8" />      <application          android:icon="@drawable/ic_launcher"          android:label="@string/app_name" >          <activity              android:name=".IntentFirstActivity"              android:label="@string/app_name" >              <intent-filter>                  <action android:name="android.intent.action.MAIN" />                  <category android:name="android.intent.category.LAUNCHER" />              </intent-filter>          </activity>          <activity              android:name=".IntentSecondActivity"              android:label="@string/app_name">              <intent-filter >                  <!--可以定制多个动作  程序中只要有一个匹配就行 -->                  <action android:name="android.andyidea.second"/>                                   <!--必须指定一个类别  用startActivity启动 -->                  <category android:name="android.andyidea.category" />                                    <!--默认必须指定一个类别 用startActivity启动 -->                  <category android:name="android.intent.category.DEFAULT" />                                    <!--路径匹配  协议://主机名:端口号/路径 -->                  <data android:scheme="http" android:host="www.andyidea.com" android:port="8080" android:path="/person"/>                                    <!--数据类型匹配 -->                  <data android:mimeType="jpeg"/>              </intent-filter>          </activity>      </application>  
第二,我们在第一个执行组件中添加相应的代码来实现匹配
//定义意图对象Intent intent = new Intent();//设置动作:可以定制多个动作  程序中只要有一个匹配就行intent.setAction("android.andyidea.second");/**添加类别:startActivity(intent)启动Activity时会自动添加 * android.intent.category.DEFAULT类别,所以需要在Manifest中 * 配置该类别.但在程序中不需要明确添加该类别*/intent.addCategory("android.andyidea.category");//设置数据:API中说这个方法会将setType的方法设置的类型清除掉intent.setData(Uri.parse("http://www.andyidea.com:8080/person"));//设置类型:API中说这个方法会将setData上面的方法设置的数据清除掉intent.setType("jpeg");/**同时设置数据和类型:如果Intent过滤器中同时包含数据和数据类型的设置 * 就只能使用该方式来设置数据和类型*/intent.setDataAndType(Uri.parse("http://www.andyidea.com:8080/person"), "jpeg");//启动组件startActivity(intent);


0 0
原创粉丝点击