一点小事...
显式Intent:直接用组件的名称定义目标组件
Intent it = new Intent(MainActivity.this,SecondActivity.class);
startActivity(it);
如此直接而已...
隐式Intent:不直接用组件的名称定义目标组件
Intent intent = new Intent();
intent.setData("...");
intent.setAction("...");
...
startActivity(intent);
如此麻烦而已....
隐式启动Activity的intent到底发给哪个activity,需要进行三个匹配,一个是action,一个是category,一个是data,可以是全部或部分匹配,同样适用于Service和BroadcastReceiver
任何一个需要隐式启动的Activity都必须要有这项:<category android:name="android.intent.category.DEFAULT"/>
intent.addCategory(Intent.CATEGORY_DEFAULT);
这两个有点特殊:
android.intent.category.MAIN 主activity
android.intent.category.LAUNCHER launcher可见
看一下几个配对
<action android:name=".....">
intent.setAction(".....");
<category android:name="..." />
intent.addCategory("...");
<data android:scheme="......"></data>
Uri uri = Uri.parse("......:");
in.setData(uri);
<data android:mimeType="..." />
in.setType("...");
别人一总结:
1. <action/>包含在 <intent-filter></intent-filter> 标签对里,而且是必不可少的!不管以哪一种方式来匹配,都不可缺少这个<action/> ,可以有多个,至少要有一个。
如有多个的,话只需要匹配其中一个即可找到这个activity
<action>里的属性值大多数是在Intent里定义的,比如<action android:name="android.intent.action.VIEW"/>里的属性值就等于 Intent.ACTION_VIEW,
在这个Intent类里以ACTION开头定义的常量都是。当然,也可以自定义。
2. 任何一个需要隐式启动的Activity都必须要有这项:<category android:name="android.intent.category.DEFAULT"/>
例外情况是:android.intent.category.MAIN和android.intent.category.LAUNCHER的 filter中没有必要加入android.intent.category.DEFAULT,当然加入也没有问题
<category> 里的属性值大多数是在Intent里定义的,比如 <category android:name="android.intent.category.DEFAULT"/>里的属性值就等于 Intent.CATEGORY_DEFAULT,
在这个Intent类里以CATEGORY开头定义的常量都是。当然,也可以自定义。
3.一个Activity里可以有多对<intent-filter></intent-filter> 只要匹配其中一对,即可启动这个Activity
4.在<intent-filter></intent-filter>里可以有多个<data android:mimeType="xxxx"/>,只需匹配其中一个即可.注意:不可以同时出现第5点的标签对,即下面这条。
5. 在<intent-filter></intent-filter>里可以有多个<data android:scheme="xxxx" android:host="yyyy" android:port="uuu"/>,只需匹配其中一个即可。
语法:
<data android:host="string"
android:mimeType="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:port="string"
android:scheme="string" />
可以分开写,如:
<data android:scheme="something" android:host="project.example.com" android:port="80"/>
等同于这样写:
<data android:scheme="something"/>
<data android:host="project.example.com"/>
<data android:port="80"/>
在java代码里,Uri的格式:scheme://host:port/path or pathPrefix or pathPattern
注意:不可以同时出现第4点的标签对,即上面那条。
6.在<intent-filter></intent-filter>里可以有多个<action android:name="xxxx"> ,只需匹配其中一个即可。
7.当匹配不上任何Activity的话,会发生异常,跳出对话框:很抱歉...某某应用程序意外停止,请重试。
8. 上面所说的全部适用于Service和BroadcastReceiver,只需把<activity ...></activity>换成<service ...></service>或<receiver ...></receiver>即可。
这小点事完了...
分享到:
相关推荐
关于intent的内容,能更好的帮助初学者了解intent的各个方面,并提供了详细的代码
在Android开发中,Intent是一种非常重要的组件,它用于在应用程序的不同组件之间传递消息,实现活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)以及内容提供者(Content Provider)之间的交互...
在Android开发中,Intent是一种非常重要的组件间通信机制。它被用来启动活动(Activity)、服务(Service)或者广播接收器(Broadcast Receiver),并且可以传递数据和执行动作。本篇文章将详细解析“Intent系统调用...
在sendBroadcast,startActivity时,我们会用到Intent。 Intent可以携带一些数据,比如基本类型数据int、Boolean,或是String,或是序列化对象,Parcelable与Serializable。 Intent传递数据时,如果数据太大,可能...
本资源包“Android应用源码之Intent_Intent.zip”应该包含了关于Intent使用的一些示例代码和解析,帮助开发者深入理解Intent的工作原理。 1. **Intent的类型** Intent主要有两种类型:显式Intent和隐式Intent。...
### Intent的常用方法 在Android开发中,`Intent`是一个非常重要的类,它主要用于应用程序组件间的通信。通过`Intent`可以启动新的Activity、Service或发送Broadcast等操作。本文将详细介绍`Intent`的一些常见用法...
【Android Intent和Intent Filter详解】 Intent是Android系统中用于组件间通信的重要机制,它描述了想要执行的操作和可能涉及的数据。Intent对象包含了组件信息、动作(Action)、数据(Data)、类别(Category)...
本文将深入探讨Intent的使用方式,包括显式Intent、隐式Intent、Intent Filter、数据传递以及如何通过Intent调用系统服务和启动第三方应用。 首先,我们来了解一下**显式Intent**。显式Intent明确指定了要启动的...
在Android开发中,Intent是一种非常重要的组件间通信(IPC)机制。Intent主要用于启动或与其它应用程序组件进行交互,如活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)以及内容提供者...
在Android应用开发中,Intent是一种强大的机制,用于在组件之间进行通信。Intent不仅可以用来启动新的Activity,还可以启动服务、广播接收器等。本教程将详细讲解如何使用Intent来实现特定的功能,包括打开新的...
【Android Intent 启动和关闭Activity】 在Android应用程序开发中,Intent是连接各个组件(如Activity、Service等)的关键桥梁,主要用于启动和关闭Activity。Intent不仅能够启动一个新的Activity,还能在Activity...
### Android Intent原理深入解析 #### 一、概览与引言 在移动开发领域,特别是在Android平台上,**Intent**作为核心通信机制之一,扮演着关键角色。它不仅用于应用程序内部不同组件之间的通信,也是实现跨应用通信...
在Android开发中,Intent和Intent Filters是两个至关重要的概念,它们是应用程序之间通信的主要桥梁,也是实现外部调用的关键机制。下面将详细讲解Intent和Intent Filters的工作原理以及如何使用它们来实现外部调用...
在Android系统中,Broadcast(广播)和Intent是两个至关重要的组件,它们构成了应用程序间通信的基础。Broadcast用于在应用程序之间传递消息,而Intent则扮演着触发操作的“信使”角色。理解并熟练运用这两个概念,...
Intent1_Intent.zip中的源码应该包含了关于Intent的实例和使用方法,让我们一起深入探讨Intent在Android应用中的作用、类型、创建与传递、以及常见用法。 1. **Intent的作用** Intent的主要功能是启动一个活动...
在Android开发中,Intent是一种非常重要的组件,它用于在应用程序的不同组件之间传递消息,实现活动(Activity)之间的交互。Intent不仅用于启动新的Activity,还能启动服务(Service)或广播接收器...
IntentIntent-Filter思维导图
在Android开发中,Intent是一种非常重要的组件,它用于在应用程序的不同组件之间传递消息,实现活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)之间的交互。本篇将深入讲解如何利用Intent进行...
在Android应用开发中,Intent是连接应用程序组件之间通信的主要方式,它可以用来启动新的Activity或服务,也可以传递数据。"Intent跳转传值"是Android开发中的一个基础且重要的概念,它使得不同组件间的数据共享变得...
### 常用Intent知识点详解 #### 概述 在Android开发中,`Intent`是一种消息对象,用于启动Activity、Service或BroadcastReceiver等组件。它还可以携带数据,并且支持多种类型的操作,例如打开一个应用、拨打电话、...