转自:http://www.blogjava.net/TiGERTiAN/archive/2010/02/03/311827.html
很多人对文档中的Intent和IntentFilter不理解是什么意思,我这里举例解释下。
Intent字面意思就是目标,目的。通俗一点,需要达成某些目标,则需要提供一些动作,这些目标的分类,以及达成这些目标所需要的一些数据等等。 Android中的Intent通过Action,Category和data等属性进行了相应的描述,我们想做某些事情(达成某些目标),就需要填写这些参数的部分或全部,这样Android才会帮助我们自动的去进行某些操作。
IntentFilter是配合Intent而生的,你有目标行动或者结果,那么那些行动和结果就会有他完成的特定要求,这些要求就是IntentFilter,可以理解为Intent和IntentFilter是相对应的。
<activity android:name=".TestService" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.intent.action.STORE_REQUEST"></action>
<category android:name="android.intent.category.ALTERNATIVE" />
<category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.TIGERTIAN"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<data android:scheme="x-id"></data>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.EDIT"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<category android:name="android.intent.category.BROWSABLE"></category>
</intent-filter>
</activity>
上面的Activity有三个Filter,第一个是给Android系统用的,表示这个Activity可以显示在桌面上(Launcher中)。同时Alternative表明,这个Activity可以
变成OptionMenu,供其他Activity直接调用。
后面两个Filter就是我自定义的了,第二个Filter可以在其他Activity中用如下方法直接调用:
Uri uri = Uri.parse("x-id://www.google.com/getDetails?id=123");
Intent in = new Intent();
in.setAction("android.intent.action.TIGERTIAN");
in.addCategory(Intent.CATEGORY_DEFAULT);
in.setData(uri);
//in.setClassName("com.tigertian.service", "com.tigertian.service.TestService");
TestActivity.this.startActivity(in);
在Filter配置中CATEGORY_DEFAULT是不可缺少的,想调用这个Service,可以不指定Class,但其他条件必须匹配 (CATEGORY_DEFAULT可以不设置,Android默认会自动加上),通过Action,category和data就可以调用相应的 Activity了,这是Android帮你做的,当然如果系统中存在多个匹配这些条件的Activity或者Service,Android根据优先级进行调用。
第三个调用方式如下:
Uri uri = Uri.parse("x-id://www.google.com/getDetails?id=123");
Intent in = new Intent();
in.setAction(Intent.ACTION_EDIT);
in.addCategory(Intent.CATEGORY_BROWSABLE);
//in.setData(uri);
//in.setComponent(new ComponentName("com.tigertian.service", "com.tigertian.service.TestService"));
TestActivity.this.startActivity(in);
看到没有?可以不指定CATEGORY_DEFAULT,Android自动帮你添加。就是这么简单。
分享到:
相关推荐
在深入理解Android应用安装的机制前,我们先来解析一下与之相关的几个关键概念:包管理器(PackageManager)、广播接收器(BroadcastReceiver)以及Intent过滤器(IntentFilter)。这些组件共同作用于应用的生命周期...
《深入剖析Android应用源码——以EyeRoom安卓桌面为例》 在移动开发领域,Android操作系统以其开源、灵活的特性,吸引了无数开发者投身其中。本文将深入探讨一款名为EyeRoom的安卓桌面应用的源码,旨在帮助读者理解...
《深入剖析Android应用源码——以Phone.zip为例》 Android操作系统以其开源、可定制的特性,在全球范围内广受欢迎,开发者可以深入源码层面去理解和优化应用程序。本篇文章将围绕"Phone.zip"这一压缩包,详细解析...
2. **定义查询过滤器**:为了查询特定权限的应用,我们需要创建一个`IntentFilter`,虽然通常用于广播接收器,但在这种情况下,我们可以用它来过滤权限。 ```java IntentFilter filter = new IntentFilter(); ...
Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...
这个Android高级应用源码示例主要展示了如何监听应用的卸载事件,并在应用被卸载后执行特定操作,如发送网络请求或打开网页。这里我们将深入探讨相关知识点: 1. **监听应用卸载**: 在Android中,系统并未提供...
在Android平台上进行应用程序开发时,有时我们需要实现特定的功能,例如本例中的“拦截史迪仔电话”。这个项目是一个实战教程,旨在帮助初学者理解和掌握Android Studio的使用以及Android移动开发的基础知识。通过...
在Android开发领域,掌握如何远程下载并安装应用的源码是一项重要的技能,这对于开发者来说意味着能够灵活地更新和管理应用程序,提高用户体验。本教程将详细解释这个过程,并以"Android源码——如何远程下载安装的...
我们将以"PowerDemo"为例,介绍如何创建一个简单的Android应用来实现这一功能,但需要注意的是,由于涉及到系统级操作,这个demo可能需要设备具有root权限才能正常工作。 首先,理解Power事件。在Android中,Power...
此外,Android的Intent和IntentFilter是实现跨组件通信的重要工具。在本例中,我们可能需要创建一个BroadcastReceiver,监听特定的Intent,如ACTION_BOOT_COMPLETED,以在设备启动时启动加锁服务,确保系统启动后...
在Android开发中,`IntentFilter`是一个至关重要的概念,它允许我们的应用程序响应特定类型的`Intent`,从而实现不同组件间的通信。`TestActivity`可能是这个话题中的一个示例活动,我们将深入探讨`IntentFilter`...
《Android广播机制详解——以应用源码之broadcast.zip为例》 在Android系统中,BroadcastReceiver(广播接收者)是实现应用程序间通信的重要组件之一。它允许应用在后台接收并响应系统或其它应用发送的广播消息,...
在Android平台上进行应用开发时,有时需要实现远程下载并安装应用程序的功能,这对于更新或分发应用非常实用。本文将深入探讨如何实现这一功能,并结合提供的毕业设计源码进行讲解。 首先,我们需要理解Android的...
《Android应用源码解析——以MyNFCDemon为例》 在Android开发中,理解源码是提升技术深度的重要途径。本篇文章将详细解析名为"MyNFCDemon"的Android应用源码,带你深入探索Android NFC(近场通信)技术的运用。 1....
例如,在本例中的`Intent.ACTION_BATTERY_CHANGED`广播就是用来通知应用电池状态发生变化的。 #### 二、创建BroadcastReceiver子类 为了接收电池状态改变的广播,我们需要创建一个BroadcastReceiver的子类。在这个...
这个压缩包"Android安卓经典设计学习例程源代码-SMSLisenter.rar"包含了有关如何在Android应用中接收和处理短信的源代码。通过深入研究这个例程,开发者可以了解到如何利用Android的BroadcastReceiver机制来监听系统...
《学习Android必看:应用框架原理与程序设计》是一本由高焕堂编著的深入解析Android开发的书籍。这本书全面介绍了Android应用框架的核心概念、工作原理以及编程实践,是Android开发者进阶的重要参考资料。 在...
在Android系统中,服务(Service)和广播接收者(BroadcastReceiver)是两个核心组件,它们在后台执行任务和实现跨应用程序通信。本教程将深入探讨如何利用这两种组件来实现手机背景的定时切换功能,比如根据用户...