我把博客看为是一个知识的积累库,吧所学到的知识积累起来,以便以后的预习,这次也是我第一次写博客,写的不好请多多包涵,好了废话不多说进入正题。最近在进行android开发过程中,在将 Intent传递给调用的组件并完成组件的调用时遇到点困难,并且之前对Intent的学习也是一知半解,最近特意为此拿出一些时间,对Intent部分进行了系统的学习并进行了部分实践,下面将自己的学习及Intent知识进行了详细的归纳整理,希望能帮助到同样遇到相同问题的博友。下面是Intent介绍、及Intent示例总结:
一、Intent介绍
Intent的中文意思是“意图”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的组件之间的交互 如:(Activity/Service)。因此,可以将Intent理解为不同组件之间通信的“媒介”专门提供组件互相调用的相关信息。
二、Intent作用
Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成android各个组件之间的通讯。比如说调用 startActivity()来启动一个Activity,或者由sendBroadcasts( )来传递给所有感兴趣的 BroadcaseReceiver,再或者由startService()/bindservice()来启动一个后台的Service,所以可以看出来,Intent主要是用来启动其他的 activity 或者service,所以可以将Intent理解成activity之间的粘合剂。
三、Intent启动组件的方法
刚刚说到Intent可以实现组件之间的交互,Intent可以启动一个Activity,也可以启动一个Service,还可以发起一个广播Broadcasts。下面我们就一起来说说具体实现的方法:
四、Intent的几个重要的属性
动作(Action),数据(Data),分类(Category),类型(Type),组件(Compent)以及扩展信(Extra)。其中最常用的是Action属性和Data属性。
1、Action属性:
在xml清单文件中有如下声明的Activity:
TargetActivity在其
public void gotoTargetActivity(View view) {
Intent intent = new Intent("com.scott.intent.action.TARGET"); startActivity(intent); }
当我们为Intent指定相应的action,然后调用startActivity()方法后,系统会根据action跳转到对应的Activity。
除了自定义的action之外,Intent也内含了很多默认的action,每一个action都有它所对应的用途。
2.data和extras,即执行动作要操作的数据和传递到目标的附加信息:
下面来举一个与浏览器交互的例子:
/**
* 打开指定网页
* @param view
*/
public void invokeWebBrowser(View view) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://www.baidu.com"));
startActivity(intent);
}
/**
* 进行关键字搜索
* @param view
*/
public void invokeWebSearch(View view) {
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, "android"); //关键字
startActivity(intent);
}
上面的第一个方法实现的功能是启动一个浏览器然后打开百度的页面、第二个方法则是进行关键字搜索。
分别对应的action是Intent.ACTION_VIEW和 Intent.ACTION_WEB_SEARCH,前者需指定相应的网页地址,后者需指定关键字信息,对于关键字搜索来说,浏览器会按照自己设置的默认 的搜索引擎进行搜索。
我们注意到,在打开网页时,为Intent指定一个data属性,这其实是指定要操作的数据,是一个URI的形式,我们可以将一个指定前缀的字符串转换成 特定的URI类型,如:“http:”或“https:”表示网络地址类型,“tel:”表示电话号码类型,等等。