深入学习Android中的Intent,Intent提供了一种通用的消息系统,它允许在你的应用程序见传递Intent来执行动作和产生事件,对Intent感兴趣的小伙伴们可以参考一下
Intent提供了一种通用的消息系统,它允许在你的应用程序见传递Intent来执行动作和产生事件,使用Intent可以激活Android应用的三种类型的核心组件:活动Activity、服务Service、广播接受者Broadcast。
Intent又分为隐士意图和显示意图。
显示意图:调用intent.setComponent()、intent.setClassName()或者intent.setClass()方法明确的制定组件名的Intent为显示意图,显示意图明确的制定要激活哪一个组件。
隐士意图:没有明确的制定组件的名称;下边是一个隐士意图的案例
首先应该在清单文件中添加相应的intent-filter
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".IntentActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".OtherActivity" android:label="@string/windowtitle">
<intent-filter >
<action android:name="cn.itcast.zhangxx"/>
<action android:name="cn.itcast.laoli"/>
<category android:name="cn.itcast.category.java"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="cn.itcast.category.php"/>
<data android:scheme="itcast" android:host="www.itcast.cn" android:path="/liming"/>
<data android:mimeType="image/*"/>
</intent-filter>
</activity>
</application>
在MainActivity.java中
public void openActivity(View v){
/**
* (没设数据参数的情况下)只要Intent中的Action和Category都出现在Intent-Filter中,就能与之匹配,否则匹配失败
*/
Intent intent = new Intent();//隐式意图激活Activity
intent.setAction("cn.itcast.zhangxx");
intent.addCategory("cn.itcast.category.java");
// intent.setData(Uri.parse("itcast://www.itcast.cn/liming"));
// intent.setType("image/jpeg");
//根据Android的API可以知道
//This method automatically clears any data that was previously set (for example by setData(Uri)).
//也就是说如果设置了setData方法在设置setType方法的话,那么setType方法就会clers掉setData方法
//解决方案如下:
intent.setDataAndType(Uri.parse("itcast://www.itcast.cn/liming"), "image/jpeg");
startActivity(intent);//方法内部为Intent添加了android.intent.category.DEFAULT类别
}










