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启动活动的更多相关文章

  1. 【Android】6.0 添加Menu菜单组件、Intent启动活动、显式Intent、隐式Intent

    1.0 在helloworld项目基础上创建活动SecondActivity: 2.0 其中main.xml: <?xml version="1.0" encoding=&q ...

  2. 【Android】12.2 利用Intent启动和关闭Activity

    分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 Android应用程序中一般都有多个Activity,在Activity中,通过调用StartActivity方法 ...

  3. Android(java)学习笔记131:Intent启动别的Activity

    1.案例 (1)首先是main.xml和other.xml文件如下: main.xml文件: <?xml version="1.0" encoding="utf-8 ...

  4. Android(java)学习笔记73:Intent启动Activity

    1. Intent启动Activity案例 (1)首先是main.xml和other.xml文件如下: main.xml文件: <?xml version="1.0" enc ...

  5. 【Android基础】利用Intent在Activity之间传递数据

    前言: 上一篇文章给大家聊了Intent的用法,如何用Intent启动Activity和隐式Intent,这一篇文章给大家聊聊如何利用Intent在Activity之间进行沟通.   从一个Activ ...

  6. Android开发之通过Intent启动系统应用的协议

    使用隐式Intent启动系统应用,除了http协议,还有geo(显示地理位置),tel(拨打电话),file(文件)等

  7. Android开发值利用Intent进行put传值,setclass启动activity,并用get进行取值

    传值方法一 [java] Intent intent = new Intent(); Bundle bundle = new Bundle(); //该类用作携带数据 bundle.putString ...

  8. Android开发之通过Intent启动其他App的Service

    在Android5.0以前可以通过隐式Intent方式启动其他App的Service,就跟Activity启动隐式Intent一样的. 但是在5.0以后,只能使用显示的Intent方式启动了. 启动其 ...

  9. nodejs爬虫笔记(五)---利用nightmare模拟点击下一页

    目标 以腾讯滚动新闻为例,利用nightmare模拟点击下一页,爬取所有页面的信息.首先得感谢node社区godghdai的帮助,开始接触不太熟悉nightmare,感觉很高大上,自己写代码的时候问题 ...

随机推荐

  1. SQL Server 数据类型转换函数

    T-SQL提供了两个显示转换的函数:CAST函数和CONVERT函数. 1. CAST函数 语法: CAST ( expression AS data_type [ ( length ) ] ) 示例 ...

  2. web前端学习路线和步骤

    H5+全栈工程师  (学习下列技术可以加QQ: 1416 7596 61)第一阶段:初级入门阶段基本功 1.HTML入门 Windows概述.浏览器概述.HTML简介.HTML标签详解.前端开发工具概 ...

  3. mkdir--命令

    mkdir命令 mkdir:make directory(ies)的缩写,用来创建目录 1.语法 mkdir [OPTION]... DIRECTORY 注释:option是选择,可选,directo ...

  4. WebSocket小插件

    一.WebSocket小介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信 ...

  5. Oracle 存储过程的导出导入序列的导出

    昨天发布网站,需要将oracle的存储过程导出来,再在新的电脑加上去.登陆—>工具—>导出用户对象—>选取需要导出的存储过程—>导出 保存格式为.sql.当然利用该种方法也可以 ...

  6. [转载] 使用HTML5的十大原因

    转载自http://www.williamlong.info/archives/3024.html 你难道还没有考虑使用HTML5? 当然我猜想你可能有自己的原因:它现在还没有被广泛的支持,在IE中不 ...

  7. python进阶------进程线程(一)

    Python中的进程线程 一.进程线程的概念 1.1进程: 进程就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成.我们编写的程序用来描述进程要完成哪些功能以及 ...

  8. iOS上new Date异常解决办法

    最近有一个项目要实现使用Angluar写一个简历模板, 用户输入姓名/生日/简介...等内容, 然后生成一份在线的简历 后来测试时遇到简历模板在Android手机跟Google浏览器上根据生日计算得出 ...

  9. SSM框架下结合 log4j、slf4j打印日志

    首先加入log4j和slf4j的jar包 <!-- 日志处理 <!-- slf4j日志包--> <dependency> <groupId>org.slf4j ...

  10. 异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.

    出现这个异常说明了跳转页面的url无对应的值. 原因1: Application启动类的位置不对.要将Application类放在最外侧,即包含所有子包 原因:spring-boot会自动加载启动类所 ...