Intent对象在Android应用开发中起到很大的做用,例如激活组件(Activity,Service 等组件)或者携带数据的功能,相信你们在开发中常常会用到这些功能,Android中的意图分为显式意图和隐式意图,显式意图你们应该用得比较多,但隐式意图在开发过程当中也是必不可少的。在这篇文章中粗略讲解下我的对隐式意图的用法。 html
假设情景:我要从一个Activity跳转到另一个Activity中,经过隐式意图来激活另一个Activity,应该如何实现呢? android
首先,咱们在Manifest.xml配置文件中配置intent-filter过滤器节点: app
- <?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>
-
- </manifest>
第二,咱们在第一个Activity中添加相应的代码来实现匹配,这里就不作过多解释了,解释在代码的注释中。
- /**定义意图对象*/
- 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);
至此,咱们应该对Android中的隐式意图有个粗略的了解了吧。