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. 【DG】利用闪回数据库(flashback)修复Failover后的DG环境

    利用闪回数据库(flashback)修复Failover后的DG环境 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能, ...

  2. PHP面向对象摘要

    一.面向对象的三种特性,分别是封装性,继承性和多态性. 1.封装性:封装是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体的实现细节,这就是封装思想. 2.继承性:继承性主要是描述 ...

  3. Java反射机制使用场景

    import java.io.*; import java.util.Properties; /*问题描述:存在一个主板--已经定义好,不想修改其代码,还想在主板上面增加一些其他功能? *问题解决方法 ...

  4. Hive 学习笔记(启动方式,内置服务)

    一.Hive介绍 Hive是基于Hadoop的一个数据仓库,Hive能够将SQL语句转化为MapReduce任务进行运行. Hive架构图分为以下四部分. 1.用户接口 Hive有三个用户接口: 命令 ...

  5. Python之matplotlib学习(四)

    例子12:ipython使用--pylab参数,默认加入matplotlib模块 [root@typhoeus79 guosong]# ipython --pylab WARNING: IPython ...

  6. jenkins 安装部署 springboot启动

     安装稳定版本的jenkins1,前置依赖:安装jdk-1.81,下载yum仓库sudo wget -O /etc/yum.repos.d/jenkins.repo  http://pkg.jenki ...

  7. Linux上安装和卸载mysql数据库 (一)

    一.前言 第一次写博客,很激动同时有点畏惧,激动是我可以将我的经验进行分享,畏惧是我怕我写的东西,大家借鉴的时候,有些步骤不能成功.不过,我还是很有信息的,我分享的经验都是我搭建成功以后才分享出来.这 ...

  8. 三种方法运行python

    注:本文基于windows 1.交互式解释器 配置好环境变量后,命令行中打开,输入python即可,Ctrl+Z退出 命令行选项 当从命令行启动Python时,可以给解释器一些选项,如下: -d   ...

  9. Mybatis(四)关联映射

    一. Mybatis关联映射 1 讲数据库中关联关系,主键表与外键表 一对多,多对一,主键表表示一 与外键表表示多 学生与学校的关系,工人与工厂,人员与部门的关系,.... 多        一    ...

  10. Linux系统bashshell之别名

    1.别名的查看: 命令查看:alias 配置文件查看:cat  ~/.bashrc 2:别名设置: alias  cdnet="cd  /etc/sysconfig/network-scri ...