Android Activity Intent隐式启动

来源:互联网 发布:淘宝怎么样开直通车 编辑:程序博客网 时间:2024/05/16 14:07

相比于activity显式启动,以直接指明需要启动的组件的类名来启动Activity,隐式启动则显得比较“麻烦”一些,但是却拥有更强大的功能。
显式启动需要指定启动对象的报名和类名。隐式启动指定一些规则,只要对应就能启动成功。当两种启动方式同时存在的时候,以显式为主。
当使用隐式启动的时候,我们需要知道,在AndroidManifest.xml文件中定义过滤器,intent-filter 其中有三个属性 action,category和data,同时一个activity可以对应多组intent-filter,只要与其中一组匹配就可以了。

action匹配规则:
action是一个字符串,必须要在intent中手动设置,若是不设置的话报找不到指定activity的错误。规则是intent中设置的action种类是intent-filter中设置的action种类的子集。在intent中设置了一个,或多个,必须要在intent-filter中全部匹配到。

category匹配规则:
category也是一个字符串,这个在intent中可以不设置,但是需要在manifest文件中设置为DEFAULT,否则也会报找不到activity的错误。
同样的在intent中设置的category的类型必须要在intent-filter中匹配到。

data匹配规则:
data在intent或者manifest中都可以不定义,因为这不是必需的,当启动某些activity的时候才会需要,但是若是在intent中设置了的话,那么必须要在intent-filter中至少匹配,和action类似。

隐式启动中,往往需要将在intent中设置到的Action,Category和Data全部匹配到AndroidManifest.xml中注册的activity的类型才能够启动成功。
隐式启动不光光能够启动自己程序中的活动,而且还能够启动其他程序的活动。这就是它的强大之处。
比如,下面我们启动系统的浏览器。

Intent intent = new Intent(Intent.ACTION_VIEW);            intent.setData(Uri.parse("http://www.baidu.com"));startActivity(intent);

启动系统的相册

 Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); startActivityForResult(intent, REQUEST_CODE);

这样我们就能够直接启动系统的自带的活动。是不是很方便呢?

0 0
原创粉丝点击