3.显式和隐式Intent详解

//这种直接指定了从哪一个活动到哪一个活动的,就是显式指定了要用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");//括号里面是action
intent2.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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值