很多人对文档中的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开发技巧之前,我们首先从一个简单的入门实例入手——“记事本”应用。这一部分旨在帮助初学者快速上手,并逐步熟悉Android开发的基本流程。 **预备知识**: - **搭建开发环境**:确保已...