Android学习--隐式Intent
来源:互联网 发布:sqlserver with as 编辑:程序博客网 时间:2024/05/22 16:57
方法:在mainfest.xml文件中对目标活动设置隐式intent的匹配条件action/category等等,在开始活动中构造Intent进行匹配
Intent intent=new Intent(actionname)
或者
Intent intent=new Intent()
intent.setAction(actionname)
一、隐式意图介绍
显式意图我们前面已经提到,形如:Intent intent = new Intent();
intent.setClass(this,Other.class);
//此句表示显式意图,因为明确设置激活对象为Other类
startActivity(intent);
顾名思义,隐式意图就是在不明确设置激活对象的前提下寻找最匹配的组件,举个例子,比如有5个人:
(1)A:170cm
(2)B:160cm
(3)C:180cm
(4)D:190cm
(5)E:200cm
如果是显示意图的话,如果我们要指明选择A的话会说:”我选择A.“,但是如果是隐式意图,则会说:”我要选择170cm的人“,虽然没有指明要选A,但会寻找条件最匹配的人。
在intent过滤器中类似于上面例子中的”身高“条件的匹配条件有:
(1)action
(2)category
(3)data:scheme、host、path、type
当在程序中设置了这些激活组件的条件,程序就会去寻找最匹配的组件,但是注意:只要有一点不匹配,则就是不匹配;
比如:
Intent intent = new Intent();
intent.setAction("a");
//此句只是指定了Action
startActivity(intent);
//寻找最匹配的组件激活,内部会调用intent.addCategory("android.intent.category.DEFAULT");
二、隐式Intent的核心代码
首先是在AndroidManifest.xml中为某个Activity设置意图过滤器:
<activity>
<intent-filter>
<action android:name="...."/>
<category android:name="...."/>
<category android:name="android.intent.category.DEFAULT"/> <!--此句一般都要加 -->
<data android:scheme="..." android:host="..." android:path="/..." android:type="..."/>
</intent-filter>
</activity>
以上设置是设置Activity本身的属性,接下来在程序中要设置的是我们要寻找时匹配的条件:
(1)Intent intent = new Intent();
(2)intent.setAction("....");
(3)intent.addCategory("....");
(4)intent.setData(Uri.parse("...."));
//设置data的scheme、host、path条件
(5)intent.setDataAndType(Uri.parse(""),String type);
//同时设置data的scheme、host、path、type条件
(6)startActivity(intent);
//调用intent.addCategory("android.intent.category.DEFAULT");
三、代码举例
场景介绍:在MainActivity中有一个按钮,点击按钮后,会进行隐式Intent匹配,最后寻找到并激活OtherActivity.
情况1:
<activity
android:name=".OtherActivity"
android:label="OtherActivity" >
<intent-filter>
<action android:name="com.xiazdong.action" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.xiazdong.category" />
<data
android:host="www.xiazdong.com"
android:scheme="xiazdong"/>
</intent-filter>
</activity>
则MainActivity代码为:
Intent intent = new Intent();
intent.setAction("com.xiazdong.action");
intent.addCategory("com.xiazdong.category");
intent.setData(Uri.parse("xiazdong://www.xiazdong.com/xia"));
startActivity(intent); //此方法中调用intent.addCategory("android.intent.category.DEFAULT");
情况2:
在<data>中多了一个android:mimeType="text/*",此时不能使用intent.setData,而要使用intent.setDataAndType();
[html] view plaincopy
<activity
android:name=".OtherActivity"
android:label="OtherActivity" >
<intent-filter>
<action android:name="com.xiazdong.action" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.xiazdong.category" />
<data
android:host="www.xiazdong.com"
android:scheme="xiazdong" android:mimeType="text/*"/>
</intent-filter>
</activity>
代码为:
[java] view plaincopy
Intent intent = new Intent();
intent.setAction("com.xiazdong.action");
intent.addCategory("com.xiazdong.category");
0 0
- Android学习--隐式Intent
- Android学习之 Intent显示和Intent隐式
- Android学习之Intent显式,隐式
- Android学习笔记--Intent
- Android Intent 机制学习
- Android学习 - Intent使用
- Android Intent 学习
- Android Intent学习
- android Intent学习总结
- Android的Intent学习
- android学习:intent/filter
- android学习笔记---Intent
- Android Intent学习总结
- Android Intent学习总结
- Android之Intent学习
- Android Intent 源码学习
- Android学习笔记 - Intent
- Android学习 - intent frag
- EL表达式的隐式对象
- Nodejs连接mysql与models对应2
- rails 表单form
- C primer plus(第五版)编程练习第二章
- php中json_decode()和json_encode()的使用方法
- Android学习--隐式Intent
- 杭州电子科技大学ACM-1090
- springMVC中配置 snaker 工作流学习
- c++_常量存储
- Problem 1581 - Union of cubes+武大校赛+线段树维护
- 0-1背包问题与分数背包问题
- Android入门--Fragment使用总结
- 函数与array对象
- 重启服务小工具