3.显式和隐式Intent详解

来源:互联网 发布:游戏中常用的算法 编辑:程序博客网 时间:2024/06/05 06:38
//这种直接指定了从哪一个活动到哪一个活动的,就是显式指定了要用Intent启动谁。Intent intent=new Intent(context,xxx.class); startActivity(intent);

接下到隐式Intent,简单的说就是指定一些条件,满足这些条件的Activity就会被启动。举个例子,下面代码中的intent2实例,是一家公司,招聘人才,要求的工作能力,能扫厕所,还有一些附带条件:男,以前是程序员。那么问题就在于要求的工作能力和条件了。都满足就会被雇佣,这里的能力就相当与接下来的action
而条件应该就是category,action只能有一个,而category可以有多个
那么Activity又是怎样让其他的activity知道自己符合条件呢??在AndroidManifest.xml中activity标签中多了一个Intent-filter标签,在这里设置!!!注意,自定义的category一定要添加
<category android:name="android.intent.category.DEFAULT"/>
这个category不然会报错,所以,我们用隐式的Intent就是这样,开出条件,系统会自动找到满足条件的Activity。

Intent intent2=new Intent("xxxxx");//括号里面是actionintent2.addCategory("zzzzz");//参数是category

隐式的Intent更多用法

1.用隐式Intent启动其他应用的活动
启动个能打开指定网页的活动可以这样写:

Intent intent=new Intent("Intent.ACTION_VIEW");intent.setData(Uri.parse("http://www.baidu.com"));//因为setUri只接收一个Uri,我们传入的是字符串,所以要解析startActivity(intent);

实现响应精确的动作,比如浏览器
在自己的activity中添加如下代码就可以响应http开头的协议:

<intent-filter><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.DEFAULT"/><data android:scheme="http"/><intent-filter/>

关于
<data android:scheme="http"/>
的更多精准配置

scheme:用来指定响应协议部分,比如”http://www.baidu.com“,这段字符串被解析后,生成的uri会将前面的http解析为协议部分,你也可以这样写”tel:10086”,正好系统的拨号器就能响应tel的协议

host:用来指定主机名部分如:www.baidu.com,
port:指定端口部分,一般跟在主机名后面
path:用来指定端口之后的部分的内容
mimeType:指定可以处理的数据类型,比如mp3,mp4,image,可以使用通配符。

完啦!!!!

0 0
原创粉丝点击