Android——Intent在活动之间跳转

一、使用显式Intent

Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);

在这里插入图片描述
二、使用隐式Intent
在使用隐式跳转的时候我们要在清单配置 action 和 categoty 标签,在action标签中我们指明了当前的活动可以相应 比如 android.intent.action.MAINTWO 这个action,而category标签包含了一些附加信息,更精确的指明了当前的活动能够响应的Intent中还可能带有category。
声明:每个Intent中只能指定一个action,但却能制定多个category。
Android——Intent在活动之间跳转_第1张图片
此图中的 android.intent.category.DEFAULT 是一种默认的category。在调用 startActivity() 方法的时候会自动将这个category添加到Intent中
只有 action 和 category中的内容同时匹配上Intent中指定的action和category时,这个活动才能响应
1、默认 categoty ,不同 action 跳转
我们现在先看一下运行效果:
Android——Intent在活动之间跳转_第2张图片
Android——Intent在活动之间跳转_第3张图片
首先我们编辑代码进行跳转:

Intent intent  = new Intent("android.intent.action.MAINTWO");
startActivity(intent);

我们来看看清单文件:
Android——Intent在活动之间跳转_第4张图片
到这里,第一层隐式跳转也就完成了

2、不同的 categoty ,相同 action 跳转
接下来我们介绍不同的 category,我们既然存在默认的,那么我们当然可以修改
Android——Intent在活动之间跳转_第5张图片
首先我们清单文件中做这样的配置。
接下来,我们这样配置代码

Intent intent  = new Intent("android.intent.action.MAINTWO");
startActivity(intent);

这个时候我们会怎样跳呢,它会让你进行选择,如图所示:
Android——Intent在活动之间跳转_第6张图片
但是如果这时我们这样编辑:

Intent intent  = new Intent("android.intent.action.MAINTWO");
intent.addCategory("android.intent.action.MY_CATEGORT");
startActivity(intent);

那么,我们就会进行选择了,我们会直接跳转Main3Activity。

3、不同的 categoty ,不同的 action 跳转
细心的小伙伴看到这里,应该已经一通百通了吧,
所以这里只放一些代码,供小伙伴们参考:
Android——Intent在活动之间跳转_第7张图片
这个时候我们可以直接指定 action 进行跳转,
Android——Intent在活动之间跳转_第8张图片
我们可以同时指定 action 和 categoty 标签进行跳转,而跳转代码:

Intent intent  = new Intent("android.intent.action.MAINTWO");
intent.addCategory("android.intent.action.MY_CATEGORT");
startActivity(intent);

三、更多隐式Intent的用法

到这里,我们已经掌握了通过Intent来启动活动的方法,但实际上隐式Intent还有更多的用法。
使用隐式Intent,我们不仅可以启动自己程序内的活动,还可以启动其他程序的活动,这使得Android多个应用程序之间的功能共享成为了可能。
我们就比如说在我们的程序中需要展示一个网页,这时你没有必要自己去实现一个浏览器(事实上也不太可能),这时我们只需要调用系统的浏览器来打开这个网页就行了。
下面我们进行代码配置:

Intent intent  = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);

然后我们点击之后看效果:
Android——Intent在活动之间跳转_第9张图片
这里我们首先指定了Intent的action 是 Intent.AVTION_VIEW,这是一个Android系统内置的操作,其常量值为android.intent.action.VIEW,然后通过Uri.parse()方法,将网址字符串解析成一个Uri对象,在调用Intent的serData()方法将这个Uri对象传递出去。
说到这里,我们还可以标签中在配置一个标签,用于更精确的制定当前活动能够响应什么类型的数据。

标签中主要可以配置以下内容:
android:scheme。用于指定数据的协议部分,如上例中的http部分。
android:host。用于指定数据的主机名部分,如上例中的www.baidu.com部分。
android:port。用于指定数据的端口部分,一般紧随在主机名之后
android:path。用于指定主机名和端口之后的部分,如一段网址中跟在域名之后的内容。
android:mimeType。用于指定可以处理的数据类型,允许使用通配符的方式进行指定。

只有data标签指定的内容和Intent中携带的Data完全一致是,当前活动才能够响应该intent,一般在data标签中都不会制定太多的内容,如上面的浏览器示例,其实只需要指定android:scheme为http,就可以相应所有的http协议的Intent了。
Android——Intent在活动之间跳转_第10张图片

你可能感兴趣的:(Android——Intent在活动之间跳转)