Android Intent 总结
//打开指定网页
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.google.com"));
startActivity(intent);
//进行关键字搜索
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, "android"); //keywords: android
startActivity(intent);
//
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:235345"));
startActivity(intent);
Uri.parse("prefix:num")
// “http:”或“https:”表示网络地址类型,
// “tel:”表示电话号码类型,“mailto:”表示邮件地址类型,等
在目标<data/>标签中包含了以下几种子元素,他们定义了url的匹配规则:
android:scheme 匹配url中的前缀,除了“http”、“https”、“tel”...之外,我们可以定义自己的前缀
android:host 匹配url中的主机名部分,如“google.com”,如果定义为“*”则表示任意主机名
android:port 匹配url中的端口
android:path 匹配url中的路径
// for example:
<activity android:name=".TargetActivity">
<intent-filter>
<action android:name="com.scott.intent.action.TARGET"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="scott" android:host="com.scott.intent.data" android:port="7788" android:path="/target" />
</intent-filter>
</activity>
<-- android:pathPrefix="/target"
scott://com.scott.intent.data:7788/target/hello
-->
Intent intent = new Intent("com.scott.intent.action.TARGET");
intent.setData(Uri.parse("scott://com.scott.intent.data:7788/target"));//merge
startActivity(intent);
// put Bundle Data
Intent intent = new Intent("xxxxx");
Bundle bundle = new Bundle();
bundle.putInt("id", 0);
bundle.putString("name", "scott");
intent.putExtras(bundle);
startActivity(intent);
// get Bundle Data
Bundle bundle = intent.getExtras();
int id = bundle.getInt("id");
String name = bundle.getString("name");
or
int id = intent.getIntExtra();
String name = intent.getStringExtra();
也可以使用Intent的getIntExtra和getStringExtra方法获取,其数据源都是Intent中的Bundle类型的实例对象
以上涉及到了Intent的三个属性:
Intent包括以下属性:
1.action,要执行的动作
2.data和extras,即执行动作要操作的数据和传递到目标的附加信息
3.category,要执行动作的目标所具有的特质或行为归类
<category android:name="android.intent.category.LAUNCHER" />
几个常见的category如下:
Intent.CATEGORY_DEFAULT (android.intent.category.DEFAULT) //默认的category
Intent.CATEGORY_PREFERENCE (android.intent.category.PREFERENCE) // 表示该目标Activity是一个首选项界面
Intent.CATEGORY_BROWSABLE (android.intent.category.BROWSABLE) //指定了此category后,在网页上点击图片或链接时,系统会考虑将此目标Activity列入可选列表,供用户选择以打开图片或链接。
intent.addCategory(String category); //在为Intent设置category时,应使用addCategory(String category)方法向Intent中添加指定的类别信息,来匹配声明了此类别的目标Activity。
4.type:要执行动作的目标Activity所能处理的MIME数据类型
例如:一个可以处理图片的目标Activity在其声明中包含这样的mimeType:
<data android:mimeType="image/*">
在使用Intent进行匹配时,我们可以使用setType(String type)或者setDataAndType(Uri data, String type)来设置mimeType。
setType(String type)
setDataAndType(Uri data, String type)
5.component,目标组件的包或类名称
在使用component进行匹配时,一般采用以下几种形式:
intent.setComponent(new ComponentName(getApplicationContext(), TargetActivity.class));
intent.setComponent(new ComponentName(getApplicationContext(), "com.scott.intent.TargetActivity"));
intent.setComponent(new ComponentName("com.scott.other", "com.scott.other.TargetActivity"));
其中,前两种是用于匹配同一包内的目标,第三种是用于匹配其他包内的目标。需要注意的是,如果我们在Intent中指定了component属性,系统将不会再对action、data/type、category进行匹配。
Activity:
startActivity(), startActivityForResult()
Service:
startService(), bindService()
Broadcasts:
sendBroadcast(), sendOrderedBroadcast(), sendStickyBroadcast()
activity.setResult() --> startActivityForResult()
+++++++++++++++++++++++++++++++++++++++++++++++++
Intent对象由以下六个部分组成:
1.Component name
2.Action
3.Data
4.Category
5.Extras
6.Flags
Component name
Component name即组件名称,是要处理这个Intent对象的组件名称。
组件名称对象由ComponentName类来封装,组件名称包含包名称和类名称,被声明在AndroidManifest.xml文件中。
组件名称通过 setComponent(),setClass(),setClassName()设置,通过getComponent()获取。
需要注意的是Component name是一个可选项,如果被设置,那么Intent对象就显式指定了要转向的组件,如果没有被设置,则Intent对象需要根据其他信息进行筛选查找。
Action
Action是指Intent要完成的动作,是一个字符串常量。
ACTIONS:
ACTION_CALL, ACTION_EDIT, ACTION_MAIN, ACTION_SYNC,
ACTION_BATTERY_LOW, ACTION_HEADSET_PLUG, ACTION_SCREEN_ON,
ACTION_TIMEZONE_CHANGED
使用 setAction() 和 getAction()来设置和读取Action属性。
Data
Data属性是执行动作的URI和MIME类型,不同的动作有不同的数据规格。
比如,Action是ACTION_EDIT时,数据域将是文档的URI;Action是ACTION_CALL时,数据域是 tel: URI ,带有要拨打的电话号码;如果Action是 ACTION_VIEW,则数据域是http: URI。
当匹配intent和能够处理intent所带的数据的组件时,知道数据类型(MIME类型)是很重要的。比如,一个展示图像的组件不应该被叫去播放一个音频。
很多情况下,从URI可以看出数据类型,比如content: URIs,表示数据是在设备上,但是是由content provider控制。
数据类型也可以显式指定,比如setData()方法指定数据为URI,setType() 指定为MIME type,setDataAndType() 指定它既为URI又为MIME type。读取的时候URI用getData(),MIME type用getType()。
Category
Category是一个字符串,提供了额外的信息,有关于能够处理这个Intent对象的组件种类。
一个Intent对象中可以包含任意数量的category描述信息。
与category相应的方法有添加addCategory()、移除removeCategory() 和获取所有category getCategories() 。
Extras
传递给Intent的额外数据,以Bundle的形式定义,就是一些键值对。
数据可以被作为一个Bundle对象被使用,利用 putExtras() 和 getExtras() 方法。
Flags
各种类型的Flag。很多是用来指定Android系统如何启动activity,还有启动了activity后如何对待它。所有这些都定义在Intent类中。
+++++++++++++++++++++++++++++++++++++++++++++++++
<data android:mimeType="video/mpeg" android:scheme="http">
<data android:mimeType="audio/mpeg" android:scheme="http">
每一个<data>元素可以指定一个URI和一个数据类型(MIME media type)。
每一个URI包含下列属性:
scheme, host, port, path
如:scheme://host:port/path
例如,在下面的URI中:
content://com.example.project:200/folder/subfolder/etc
Android Intent 总结的更多相关文章
- android Intent介绍
Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 ...
- android:Intent匹配action,category和data原则
1.当你在androidmanifest里面定义了一个或多个action时 你使用隐式意图其他activity或者service时,规定你隐式里面的action必须匹配XML中定义的action,可以 ...
- Android Intent
Intent在Android中的重要性不言而喻.本文主要总结下Intent使用过程中需要注意的一些问题. 1.隐式Intent AndroidManifest.xml声明时<intent-fil ...
- android intent和intent action大全
1.Intent的用法:(1)用Action跳转1,使用Action跳转,如果有一个程序的AndroidManifest.xml中的某一个 Activity的IntentFilter段中 定义了包含了 ...
- Android总结篇系列:Android Intent
Intent在Android中的重要性不言而喻.本文主要总结下Intent使用过程中需要注意的一些问题. 1.隐式Intent AndroidManifest.xml声明时<intent-fil ...
- 什么时候加上android.intent.category.DEFAULT
什么时候加上android.intent.category.DEFAULT 1.要弄清楚这个问题,首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent ...
- (转)android.intent.action.MAIN与android.intent.category.LAUNCHER
android.intent.action.MAIN决定应用程序最先启动的Activity android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里 在网上看到 ...
- android之android.intent.category.DEFAULT的用途和使用
1.要弄清楚这个问题,首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent. Explicit Intent明确的指定了要启动的Acitivity , ...
- 理解android.intent.action.MAIN 与 android.intent.category.LAUNCHER
刚才看了一下sundy的视频<LLY110426_Android应用程序启动>,里面讲到luncher这个activity通过获取应用程序信息来加载应用程序,显示给用户,其中就是通过一个应 ...
- Android Intent的几种用法全面总结
Android Intent的几种用法全面总结 Intent, 用法 Intent应该算是Android中特有的东西.你可以在Intent中指定程序要执行的动作(比如:view,edit,dial), ...
随机推荐
- RHEL7 利用单个物理网卡实现VLAN
使用nmcli创建网桥配置 #nmcli connection add type bridge con-name br0 stp no 使用nmcli创建VLAN设备配置 #nmcli connect ...
- 高可用OpenStack(Queen版)集群-6.Nova控制节点集群
参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:http ...
- java之接口开发-初级篇
简述:转眼之间已经开发java有五年之余了,从以前的刚刚接触电脑,到现在的公司上班,真是转眼之间呀!前两年开发过前端,后台和Android,Android火的那几年,差点转去做Android,哈哈!后 ...
- PytorchZerotoAll学习笔记(一)
Pytorch的安装请参考torch的官方文档,传送门:https://pytorch.org/get-started/locally/ Numpy的复习 如果你之前没有学过Numpy的话,建议去看看 ...
- 【转】Java生成plist下载ipa文件
我们在上传ipa想要安装的时候必须要通过plist文件去下载,并且还要遵循 itms-services协议. 意思就是,第一步我们要生成一个plist文件, 第二步生成一个html文件,用来指向pli ...
- Final发布文案+美工
团队名称:探路者 1蔺依铭:http://www.cnblogs.com/linym762/(组长) 2张恩聚:http://www.cnblogs.com/zej87/ 3米赫:http://www ...
- 软工大作业DB天气项目风险评估
风险 发生概率 损失 风险度 解决方案 项目延期 80% 浪费时间,项目完成进度降低,考试得分低 79% 提前做好详细的准备工作,各方面做好沟通. 工作效率低下 30% 影响进度,使项目延期. 85% ...
- Java导出引用jar包的文件
安装Eclipse打包插件Fat Jar 方案一对于含有较多第三方jar文件或含有第三方图片资源等就显得不合适,太繁琐.这时可以使用一个打包的插件-Fat Jar. Fat Jar ...
- 其实servlet就是一种mvc设计思想的一种实现
看图,不说话
- Week4-作业1:阅读与博客
第四章.两人合作 1.原文: 在变量面前加上有意义的前缀,程序员就能一眼看出变量的类型及相应的语义.这就是“匈牙利命名法”的用处.还有一些地方不适合用“匈牙利命名法”,比如,在一些强类型的语言(如C# ...