Android笔记(五)利用Intent启动活动
Intent是意图的意思,分为显式 Intent 和隐式 Intent。
以下我们试图在FirstActivity中通过点击button来启动SecondActivity
1.显式Intent
在应用中建立两个类,FirstActivity和SecondActivity。分别为它们建立layout布局文件first_layout,second_layout,并在AndroidManifest.xml中注冊。
Intent的使用方法: Intent(Context packageContext, Class cls)。
这个构造函数接收两个參数。第一个參数 Context 要求提供一个启动活动的上下文。第二个參数 Class 则是指定想要启动的目标活动。 通过这个构造函数就能够构建出 Intent 的“意图”。
将FirstActivity中button1的响应事件改动为
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
光有意图还不够。Activity 类中提供了一个 startActivity()方法,这种方法是专门用于启动活动的,它接收一个 Intent參数,这里我们将构建好的 Intent传入 startActivity()方法就能够启动目标活动了。
2.隐式意图
隐式Intet并不明白指出我们想要启动哪一个活动。而是指定了一系列更为抽象的 action 和 category 等信息,然后交由系统去分析这个 Intent,
并帮我们找出合适的活动去启动。
AndroidManifest.xml中在SecondActivity里加入
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
然后改动 FirstActivity 中button的点击事件
Intent intent = new Intent(“com.example.activitytest.ACTION_START”);
startActivity(intent);
由于动作相匹配,而类别是默认的,所以也能启动SecondActivity
每一个 Intent 中仅仅能指定一个 action,但却能指定多个 category。眼下我们的 Intent 中仅仅有一个默认的 category。那么如今再来添加一个吧。
Intent intent = new Intent(“com.example.activitytest.ACTION_START”);
intent.addCategory(“com.example.activitytest.MY_CATEGORY”);
startActivity(intent);
那么,我们在AndroidManifest.xml中注冊的活动也要改动对应的类别才干响应这个Intent
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START"/>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.example.activitytest.MY_CATEGORY"/>
</intent-filter>
再次又一次启动程序,就ok了。
3.隐式Intent的还有一个功能:显示网页
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(“http://www.baidu.com“));
startActivity(intent);
uri是统一资源标识符的缩写。先将百度的网址转化成统一资源标识符,然后在传入intent,ACTION_VIEW会依据传入的数据类型打开对应的活动,本例中打开的是网页,也能够打开拨号程序。地图定位等。
< intent-filter >标签中有一个< data >标签,用于指定当前活动响应什么类型的数据,< data >标签中主要能够配置以下内容
1. android:scheme
用于指定数据的协议部分。如 http部分 。
2. android:host
用于指定数据的主机名部分。如 www.baidu.com 部分。
3. android:port
用于指定数据的port部分。一般紧随在主机名之后。
4. android:path
用于指定主机名和port之后的部分,如一段网址中跟在域名之后的内容。
5. android:mimeType
用于指定能够处理的数据类型,同意使用通配符的方式进行指定。
仅仅有< data >标签中指定的内容和 Intent 中携带的 Data 全然一致时。当前活动才干够响应该 Intent。
只是一般在< data >标签中都不会指定过多的内容。如上面浏览器演示样例中。事实上仅仅须要指定 android:scheme 为 http,就能够响应全部的 http 协议的 Intent 了。
以下这个就是能够打开网页的活动
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
</intent-filter>
调用系统拨号界面
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
Intent 的 action 是 Intent.ACTION_DIAL,这又是一个 Android 系统的内置动作。然后在 data 部分指定了协议是 tel。号码是 10086。效果如图:
Android笔记(五)利用Intent启动活动的更多相关文章
- 【Android】6.0 添加Menu菜单组件、Intent启动活动、显式Intent、隐式Intent
1.0 在helloworld项目基础上创建活动SecondActivity: 2.0 其中main.xml: <?xml version="1.0" encoding=&q ...
- 【Android】12.2 利用Intent启动和关闭Activity
分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 Android应用程序中一般都有多个Activity,在Activity中,通过调用StartActivity方法 ...
- Android(java)学习笔记131:Intent启动别的Activity
1.案例 (1)首先是main.xml和other.xml文件如下: main.xml文件: <?xml version="1.0" encoding="utf-8 ...
- Android(java)学习笔记73:Intent启动Activity
1. Intent启动Activity案例 (1)首先是main.xml和other.xml文件如下: main.xml文件: <?xml version="1.0" enc ...
- 【Android基础】利用Intent在Activity之间传递数据
前言: 上一篇文章给大家聊了Intent的用法,如何用Intent启动Activity和隐式Intent,这一篇文章给大家聊聊如何利用Intent在Activity之间进行沟通. 从一个Activ ...
- Android开发之通过Intent启动系统应用的协议
使用隐式Intent启动系统应用,除了http协议,还有geo(显示地理位置),tel(拨打电话),file(文件)等
- Android开发值利用Intent进行put传值,setclass启动activity,并用get进行取值
传值方法一 [java] Intent intent = new Intent(); Bundle bundle = new Bundle(); //该类用作携带数据 bundle.putString ...
- Android开发之通过Intent启动其他App的Service
在Android5.0以前可以通过隐式Intent方式启动其他App的Service,就跟Activity启动隐式Intent一样的. 但是在5.0以后,只能使用显示的Intent方式启动了. 启动其 ...
- nodejs爬虫笔记(五)---利用nightmare模拟点击下一页
目标 以腾讯滚动新闻为例,利用nightmare模拟点击下一页,爬取所有页面的信息.首先得感谢node社区godghdai的帮助,开始接触不太熟悉nightmare,感觉很高大上,自己写代码的时候问题 ...
随机推荐
- struts2常见错误
1.Caught exception while loading file struts-default.xml - [unknown location]解决办法:由于lib包冲突造成的,将两个解析x ...
- SVN Upgrade working copy
出现这个的原因是因为你机器上安装的svn客户端版本过高,而你从别的地方拷贝代码中的svn版本过低,点击SVN Upgrade working copy可以将代码中的svn版本升级.
- SignalR实现消息推送,包括私聊、群聊、在线所有人接收消息(源码)
一.关于SignalR 1.简介:Signal 是微软支持的一个运行在 Dot NET 平台上的 html websocket 框架.它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面, ...
- struts2 中文乱码问题,自定义过滤器通用解决方法
问题描述 在JSP中使用form表单向后台action中传递中文参数,后台action接收到参数出现中文乱码.JSP页面统一采用了utf-8编码格式.由于struts2默认采用的编码为utf-8,根据 ...
- 【ThinkPHP框架学习 】(2) --- 后台管理系统如何用iframe点击左边右边局部刷新
如题: 在写后台管理系统时,需要实现后台界面的局部动态刷新. 左边的导航栏使用a标签进行设置,通过href和target属性的配合,就可以将iframe中的子页实现动态 ...
- 解决ajax的parsererror错误的终极办法(后台传给前台的数据json问题)
解决ajax的parsererror错误的终极办法(后台传给前台的数据json问题) 出现这个问题的原因是因为后台传给前台的数据出现了问题,ajax对于json的格式特别的严格 下面是会出现这个问题的 ...
- C#泛型集合之List
1.命名空间:System.Collections.Generic(程序集:mscorlib)2.描述: 1).表示可通过索引访问的对象的强类型列表:提供用于对列表进行搜索.排序和操作的方法. 2). ...
- [转载] Java NIO教程
转载自并发编程网 – ifeve.com http://ifeve.com/java-nio-all/ 关于通道(Channels).缓冲区(Buffers).选择器(Selectors)的故事. 从 ...
- 同步docker的时间
因为在没设置的docker中,其时间与主机相差8小时. 在docker命令行中输入 # echo "Asia/Shanghai" > /etc/timezone# dpkg ...
- 设计模式的征途—15.观察者(Observer)模式
在日常生活中,交通信号灯指挥者日益拥挤的城市交通.红灯亮,汽车停止:绿灯亮,汽车继续前行:在这个过程中,交通信号灯是汽车的观察目标,而汽车则是观察者.随着交通信号灯的变化,汽车的行为也会随之变化,一盏 ...