Android开发中Intent意图对象使用方法
Android 基本的设计理念室鼓励减少组件间的耦合,因此Android提供了Intent(意图),Intent提供了一种通用的消息系统,它应许在你的应用程序与其他的应用程序间传递Intent 来执行动作和产生时间。使用Intent可以激活Android应用三种类型的核心组件:活动、服务和广播接受者。
Intent可以划分为显式意图和隐式意图。
显式意图:调用Intent.setComponent()\Intent.setClassName()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了要激活的组件是哪个组件。
隐式意图:没有明确指定组件名的Intent为隐式意图,Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。
显式意图:
Intent intent=new Intent();
intent.setClassName("cn.china.singleinstance","cn.china.singleinstance.SingleInstanceActivity");
startActivity(intent);
隐式意图:
Intent intent=new Intent();
intent.setAction("cn.china.myActivity");
intent.addCatogory("cn.china.category.myCategory");
startActivity(intent); //此方法内部会为intent对象添加一个默认类别 (“android.intent.category.DEFAULT”)
// 规律:(前提:没设置数据参数的情况下)只要意图Intent中的Action 和Category 都出现在 清单文件中组件定义的intent-filter中,就能与之匹配,否则匹配失败
如果组件过过滤器中定义了数据申明时候,程序中为了与之匹配,则要添加数据才能激活该组件
<data android:scheme="cn" android:host="www.china.cn" android:path="xxx"/>
<data android:mimeType="image/*"/>
(.txt文件的数据类型为:text/plain ; .xml文件的数据类型为:text/xml ;.jpeg图片的数据类型为: image/jpeg )
intent.setData(Uri.parse("cn://www.china.cn/xxx"));
intent.setType("image/jpeg"); //以jpeg图片为例
startActivity(intent);
因为intent.setType()方法会清楚掉意图对象中data属性,所以上面的方法行不通
intent.setDataAndType(Uri.parse("cn://www.china.cn/xxx"), "image/jpeg"); //同时设置数据了类型;