Pro Android学习笔记(十一) 了解Intent(中)

本文详细介绍了Android中Intent的构成,包括Action、Data、Extra data和Component。Intent用于启动Activity,可以携带action、data、额外数据,并通过AndroidManifest.xml注册。重点讲解了如何通过Action、Data、Category和Component来指定调用的Activity,以及隐式和显式Intent的区别。同时,提到了Intent的Category属性,如CATEGORY_LAUNCHER和CATEGORY_DEFAULT在启动应用和隐式调用中的作用。
摘要由CSDN通过智能技术生成
               

Intent的构成

Intent可以带有action,data(由URI表达),extra data(key/value map,键值对),指定的类名(成为component name)。一个intent至少携带上述的一个内容。

Action。Action名,在上一笔记中已经给出两种例子,一种是系统自带的,如Intent.ACTION_DAIL,一种是开发者通过AndroidManifest.xml进行注册的,在创建intent时给出:Intent intent=new Intent(String action_name);。action_name字符串的名字前缀是类名。

Data。由不同action决定有效的URI的格式。intent.setData(Uri.parse(”xxxxxx”));。被唤起的activity可以同activity.getIntent()来获得intent,然后通该intent的getData()来获取数据。

//触发方。 
Intent i = new Intent(actionName);
String uriStr = "wei://www.flowingflying.com";
i.setData(Uri.parse(uriStr));
this.startActivity(i);


//被触发方。需要在AndroidManifest.xml中在intent-filter中注册data信息,后文详细说明
Intent intent = this.getIntent();
String data = intent.getData();

通用的action即数据传递。Action和唤起的并非是一对一的,例如Intent.ACTION_VIEW根据data,唤起不同的应用。这种一对多,也就是通用的action,在manifest中注册时,需要声明数据(URI)的要求。具体可以参考:http://developer.android.com/guide/topics/manifest/data-element.html。ACTION_VIEW是通过schema进行区分。通过class名字、action名字等方式进行指定的称为explicit intent,可以一对多的称为implicit intent。

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

    </intent-filter>
</activity>

如果我们自己的intent要传递data,也必须要在manifest中注册data,否则intent会唤起失败,报告ActivityNotFoundException的异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值