- 浏览: 59534 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (218)
- ★★★ Android ★★★ (37)
- 【 Java 基础】✚ (0)
- ☞Java 基础概述 (0)
- ☞Java 基本语法 (0)
- ☞Java 面向对象编程 (0)
- ☞Java多线程 (0)
- ☞Java 异常处理 (0)
- ☞Java 集合框架 (0)
- ☞Java 泛型 (0)
- ☞Java 枚举和注解 (0)
- ☞Java IO流 (0)
- ☞Java 常用类 (0)
- ☞Java GUI键盘事件 (0)
- ☞Java 网络编程 (0)
- ☞Java 正则表达式 (0)
- ☞Java 反射机制 (0)
- ☞Java 小项目 (0)
- ☞Java 面试/笔试题 (0)
- 【HTML5 开发基础】✚ (0)
- ☞HTML常用标签 (0)
- ☞HTML 新特性 (0)
- ☞CSS/CSS3常用语法 (0)
- ☞JavaScript基础语法 (0)
- ☞HTML5 小项目 (0)
- ☞HTML5 面试/笔试题 (0)
- 【Android 基础阶段】✚ (12)
- ☞Android 快速入门 (1)
- ☞Android 核心组件 (1)
- ☞Android Intent (0)
- ☞Android 用户界面 (5)
- ☞Android 数据存储 (0)
- ☞Android Tomcat服务器 (0)
- ☞Android 网络编程 (2)
- ☞Android 消息机制 (0)
- ☞Android 事件机制 (0)
- ☞Fragment和ViewPager (3)
- ☞Android动画与图形处理 (0)
- ☞Android多媒体应用开发 (1)
- ☞Android 传感器开发等 (0)
- ☞Android GPS应用 (0)
- ☞Android C语言 (0)
- ☞Android JNI/NDK开发 (0)
- ☞Android Git/SVN (0)
- ☞Android 小项目 (0)
- ☞Android 面试/笔试题 (0)
- 【Android 微知识点】✚ (7)
- ☞Android 一些模版代码 (0)
- ☞Android 模块功能代码 (0)
- ☞Android UI控件大全 (2)
- ☞Android 自定义适配器 (1)
- ☞Android 自定义属性 (3)
- ☞Android 自定义动画 (0)
- ☞Android 启动过程 (0)
- ☞Android 性能优化 (0)
- ☞Android 图片三级缓存 (0)
- ☞Android 屏幕适配 (0)
- ☞Android OOM内存溢出 (0)
- ☞Android 权限 (0)
- ☞Android JNI (0)
- 【Android 网络编程】✚ (1)
- ☞Android Json解析 (2)
- ☞Android 网络请求 (2)
- 【Android 解析器】✚ (0)
- ☞Android XML (0)
- ☞Android DOM (0)
- ☞Android dom4j (0)
- ● (0)
- ●● (0)
- ●●● (0)
- ●●●● (0)
- ●●●●● (0)
- ●●●●●● (0)
- ●●●●●●● (0)
- ●●●●●●●● (0)
- ●●●●●●●●● (0)
- ☞☞☞☞☞☞☞☞☞☞ (0)
- ☞☞☞☞☞☞☞☞☞ (0)
- ☞☞☞☞☞☞☞☞ (0)
- ☞☞☞☞☞☞☞ (0)
- ☞☞☞☞☞☞ (0)
- ☞☞☞☞☞ (0)
- ☞☞☞☞ (0)
- ☞☞☞ (0)
- ☞☞ (0)
- ☞ (0)
- 【Android重量级框架】✚ (14)
- ☞框架归类 (1)
- ☞Gson (0)
- ☞xUtils3 (2)
- ☞xListView (0)
- ★ Volley (0)
- ★ AndroidAnnotations (0)
- ★ Glide (0)
- ★ SlidingMenu (0)
- ★ TabLayout (1)
- ★ ViewPagerIndicator (4)
- ★ Pulltorefresh (1)
- ★ PhotoView (1)
- ★ EventBus (0)
- ★ Vitamio5.0 (0)
- ★ Image-Loader (1)
- ★ Android-gif-drawable (0)
- ★ ActionBar (0)
- ★ ActionBarSherlock (0)
- ★ OkHttp (0)
- ★ Afinal (2)
- ★ Ffmpeg (0)
- ★ RxJava (0)
- ★ Picasso (0)
- ★ FastJson (0)
- ★ Toolbar (0)
- ★ GreenDao (0)
- ★ Otto (0)
- ★ ORMLite (0)
- ★ Retrofit (0)
- ★ Fresco (0)
- ★ SnappyDB (0)
- ★ Butterknife (0)
- ★ PagerSlidingTabStrip (0)
- PinterestLikeAdapterView (0)
- ★ NotBoringActionBar (0)
- ★ StickyListHeaders (0)
- ★ NineOldAndroids (0)
- ★ Expandablelistview (0)
- ★ SwipeRefreshLayout (0)
- ★ SwipeMenuListView (0)
- ★ (0)
- ★★ (0)
- ★★★ (0)
- ★★★★ (0)
- ★★★★★ (0)
- ★★★★★★ (0)
- ★★★★★★★ (0)
- ★★★★★★★★ (0)
- ★★★★★★★★★ (0)
- ★★★★★★★★★★ (0)
- ❉❉❉❉❉❉❉❉❉❉ (0)
- ❉❉❉❉❉❉❉❉❉ (0)
- ❉❉❉❉❉❉❉❉ (0)
- ❉❉❉❉❉❉❉ (0)
- ❉❉❉❉❉❉ (0)
- ❉❉❉❉❉ (0)
- ❉❉❉❉ (0)
- ❉❉❉ (0)
- ❉❉ (0)
- ❉ (0)
- 【第三方分享库】✚ (0)
- ○○○○○○○○○○ (0)
- ○○○○○○○○○ (0)
- ○○○○○○○○ (0)
- ○○○○○○○ (0)
- ○○○○○○ (0)
- ○○○○○ (0)
- ○○○○ (0)
- ○○○ (0)
- ○○ (0)
- ○ (1)
- 【Android开源项目】✚ (1)
- ☞综合性项目 (0)
- ☞多媒体项目 (1)
- ☞新闻性项目 (2)
- ☞社交性项目 (0)
- ☞商城性项目 (0)
- ☞Android 支付宝 (0)
- ☞Android 第三方登录 (0)
- ☞Android 语音识别 (0)
- ☞Android消息推送 (1)
- ☞Android 蓝牙 (0)
- ☞Android 传感器 (0)
- ☞Android 动画 (0)
- ☞Android 省市县三级联动 (0)
- ☞短信验证技术 (0)
- ☞二维码扫描技术 (0)
- ☂ (0)
- ☂☂ (0)
- ☂☂☂ (0)
- ☂☂☂☂ (0)
- ☂☂☂☂☂ (0)
- ☂☂☂☂☂☂ (0)
- ☂☂☂☂☂☂☂ (0)
- ☂☂☂☂☂☂☂☂ (0)
- ☂☂☂☂☂☂☂☂☂ (0)
- ☂☂☂☂☂☂☂☂☂☂ (0)
- ♣♣♣♣♣♣♣♣♣♣ (0)
- ♣♣♣♣♣♣♣♣♣ (0)
- ♣♣♣♣♣♣♣♣ (0)
- ♣♣♣♣♣♣♣ (0)
- ♣♣♣♣♣♣ (0)
- ♣♣♣♣♣ (0)
- ♣♣♣♣ (0)
- ♣♣♣ (0)
- ♣♣ (0)
- ♣ (0)
- 【Android源码分析】✚ (4)
- 【Android项目阶段】✚ (1)
- ☞Android主流架构搭建 (0)
- ☞综合性<手机安全卫士> (0)
- ☞多媒体<手机影音> (1)
- ☞新闻性<北京新闻> (0)
- ☞社交性<硅谷社交> (0)
- ☞商城性<硅谷商城> (0)
- ☞内涵段子<百思> (0)
- ☞<地图相关开发接口> (0)
- ☞下载<电子应用市场> (0)
- ☞智能<手机遥控家电> (0)
- ☞游戏<植物大战僵尸> (0)
- ☞企业实战<开源中国> (0)
- ☞Android5.0+6.0新特性 (0)
- ☞高级特效专辑 (0)
- ☞项目管理与实施 (0)
- ☞项目经验:面试/笔试题 (0)
- 【Android 前沿技术】✚ (0)
- ☞图文混排技术 (0)
- ☞百分比布局 (0)
- H5混合开发☞ (0)
- ☞APP增量升级 (0)
- ☞软件崩溃收集 (0)
- ☞前沿技术分享 (0)
- 【Android+H5混合开发】✚ (0)
- ☞React基本语法 (0)
- ☞React Native开发环境搭建 (0)
- ☞React Native开发基础 (0)
- ☞React Native常用组件 (0)
- ☞React Native常用API (0)
- ☞豆瓣搜索项目 (0)
- ☏ (0)
- ☏☏ (0)
- ☏☏☏ (0)
- ☏☏☏☏ (0)
- ☏☏☏☏☏ (0)
- ☏☏☏☏☏☏ (0)
- ☏☏☏☏☏☏☏ (0)
- ☏☏☏☏☏☏☏☏ (0)
- ☏☏☏☏☏☏☏☏☏ (0)
- ☏☏☏☏☏☏☏☏☏☏ (0)
- ☎☎☎☎☎☎☎☎☎☎ (0)
- ☎☎☎☎☎☎☎☎☎ (0)
- ☎☎☎☎☎☎☎☎ (0)
- ☎☎☎☎☎☎☎ (0)
- ☎☎☎☎☎☎ (0)
- ☎☎☎☎☎ (0)
- ☎☎☎ (0)
- ☎☎ (0)
- ☎ (0)
- 【Android+H5项目实战】✚ (0)
- 【程序员软件系列】✚ (4)
- ☞Eclipse (0)
- ☞Android Studio (4)
- ☞Genymotion (0)
- ☞Tomcat服务器 (0)
- ☞MyScal (0)
- ☀ (0)
- ☀☀ (0)
- ☀☀☀ (0)
- ☀☀☀☀ (0)
- ☀☀☀☀☀ (0)
- ☀☀☀☀☀☀ (0)
- ☀☀☀☀☀☀☀ (0)
- ☀☀☀☀☀☀☀☀ (0)
- ☀☀☀☀☀☀☀☀☀ (0)
- ☀☀☀☀☀☀☀☀☀☀ (0)
- ☻☻☻☻☻☻☻☻☻☻ (0)
- ☻☻☻☻☻☻☻☻☻ (0)
- ☻☻☻☻☻☻☻☻ (0)
- ☻☻☻☻☻☻☻ (0)
- ☻☻☻☻☻☻ (0)
- ☻☻☻☻☻ (0)
- ☻☻☻☻ (0)
- ☻☻☻ (0)
- ☻☻ (0)
- ☻ (0)
- ♬♬♬ 技术网站 ♬♬♬ (2)
- ◙ (0)
- ◙◙ (0)
- ◙◙◙ (0)
- ◙◙◙◙ (0)
- ◙◙◙◙◙ (0)
- ◘◘◘◘◘ (0)
- ◘◘◘◘ (0)
- ◘◘◘ (0)
- ◘◘ (0)
- ◘ (0)
- 【Android 其他技术】✚ (0)
- ☞Android反编译 (0)
- ☞抓包 (0)
- ☞多渠道打包及软件上线 (0)
- 【github项目/博客系列】✚ (1)
- ☞注册github步骤 (0)
- ☞github项目 (0)
- ☞优秀博客系列 (1)
- 【开发经验分享】✚ (2)
- ☞Android 知识体系 (1)
- ☞项目经验分享 (0)
- ☞面试与就业指导 (1)
- ☞Android面试技术汇总 (2)
- ♬♬♬ 词汇 ♬♬♬ (0)
- 【Android基础单词】✚ (0)
- 【javaSE单词】✚ (0)
- 【个人博客资料】✚ (0)
- 博客链接 (1)
- 快速开发 (1)
- JavaEE面试题 (1)
最新评论
Intent组件

Intent是Android中的重要组件,可以被认为是不同组件之间通信的“媒介”或者“信使”。使用它可以启动Activity,Service还可以发起一个广播(Broadcast)。Intent对象由Action、Data、Category、Component和Extra组成。下面就以上属性进行分析说明。
1. Component在使用Intent显式的启动目标组件时,需要指定组件的名称(ComponentName)。Intent的组件名称对象由ComponentName类来封装。代码如下:
// 实例化组件名称 ComponentName cn = new ComponentName(MainActivity.this, "com.amaker.ch06.app1.MyActivity"); // 实例化Intent Intent intent = new Intent(); // 为Intent设置组件名称属性 intent.setComponent(cn); // 启动Activity startActivity(intent);
同时,在目标组件中,可以获得传过来的Intent的属性。如下:
// 获得Intent Intent intent = this.getIntent(); // 获得组件名称对象 ComponentName cn = intent.getComponent(); // 获得包名称 String packageName = cn.getPackageName(); // 获得类名称 String className = cn.getClassName(); // 实例化TextView tv = (TextView)findViewById(R.id.TextView); // 显示 tv.setText("组件包名称:"+packageName+"\n"+"组件类名称:"+className);
除了使用setComponent() 之外,还可以使用setClass(),setClassName()来显式指定目标组件。
2. Action
Action规定了Intent要完成的动作,是一个字符串常量。使用setAction()来设置Action属性,使用getAction()来获得Action属性。既可以使用系统内置的Action,也可以自己定义。
自定义Action:
public static final String MY_ACTION="com.amaker.ch07.app.MY_ACTION"; ....... Intent intent = new Intent(); // 为Intent设置Action属性 intent.setAction(MY_ACTION); // 启动Activity startActivity(intent);对于使用自定义的Action的隐式发送组件的过程中,需要在目标组件的AndroidManifest.xml中声明过滤器规则,将Action加入其中。如下:
<intent-filter> <action android:name="com.amaker.ch06.app.MY_ACTION" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter>
访问系统的Action方法同上,区别在于无需自定义Action字符串,直接使用系统内部的就可以,此处不再赘述。
3. Intent的Data和Type属性
不同的动作伴随着不同种类的数据规格。setData()方法指定数据只能为一个URI,setType()指定它只能是一个MIME类型, 而setDataAndType()指定它同时为URI和MIME类型。URI通过getData()读取,类型则通过getType()。
当匹配一个意图到一个能处理数据的组件时,除了它的URI外,通常需要知道数据类型(它的MIME类型)。 比如,一个能显示图片的组件不应该被要求去播放一个声音文件。如下:
<data android:type="video/mpeg" android:scheme="http" . . . /> <data android:type="audio/mpeg" android:scheme="http" . . . />
下面代码是开启打电话界面的程序片段:
data="content://contacts/people/1"; uri=Uri.parse(data); intent=new Intent(); intent.setData(uri); intent.setAction(Intent.ACTION_VIEW); startActivity(intent);
下面的代码是Type类型的数据的访问:
Intent intent=new Intent(); intent.setType("vnd.android.cursor.item/phone"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivity(intent); break;
4. Category
该属性是一个执行Action的附件信息。可以看作是设置一些特性的设置。
常量 |
含义 |
CATEGORY_BROWSABLE |
目标活动可以被浏览器安全的唤起来显示被一个链接所引用的数据-比如,一张图片或一条e-mail消息。 |
CATEGORY_GADGET |
这个活动可以被嵌入到充当配件宿主的另外的活动里面。 |
CATEGORY_HOME |
这个活动将显示桌面,也就是用户开机后看到的第一个屏幕或者按HOME键时看到的屏幕。 |
CATEGORY_LAUNCHER |
这个活动可以是一个任务的初始活动并被列在应用程序启动器的顶层。 |
CATEGORY_PREFERENCE |
目标活动是一个选择面板。 |
5. Extra属性
该属性是添加一些组件的附加信息。代码如下:
Uri uri = Uri.parse("smsto://10086"); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); intent.putExtra("sms_body", "测试短信"); startActivity(Intent.createChooser(intent, "发送短信"));以上程序片是发送短信的页面出现,在其中的联系人和文本信息框中出现的是10086和“测试短信”。另外,使用Extra属性也可以向自定的其他组件发送数据。在目标组件中可以接收。代码如下:
Intent intent=getIntent(); int user=intent.getIntExtra("userId",0);
6. Intent Filter
在不指定目标组件名称的时候,需要使用隐式寻找目标组件的方法。,这就需要通过Intent Filter来实现。目标Intent在AndroidManifest.xml中的Intent Filter标签中指定Action,Data和Category。然后源Activity通过查找已经注册在AndroidManifest.xml中的所有Intent,最终找到匹配的Intent。声明方法如下:
<activity android:name="TestActivity" > <intent-filter> <action android:name="com.amaker.ch06.app.TEST_ACTION1"/> <action android:name="com.amaker.ch06.app.TEST_ACTION2"/> <action android:name="com.amaker.ch06.app.TEST_ACTION3"/> <action android:name="android.intent.action.VIEW"/> 0 //Type和data属性都在这个标签中设置。URI被拆分成两个部分,scheme和path。 <data android:scheme="content" android:path="com.amaker.ch07.app/abc"/> <data android:scheme="http" android:path="www.google.com" /> //这行必须添加 <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="com.amaker.ch07.app.CATEGORY1"/> </intent-filter> </activity>在过滤器中,如下几点需要注意:
a. 如果Intent指定了Action,则目标组件中的过滤器Action列表中必须包含这个Action,否则不能匹配。如果Intent没有指定,则自动通过。
b. android.intent.category.DEFAULT属性是启动Activity默认的属性,这个必须添加。
c. 如果有多个Intent过滤规则相同,那么会自动提示使用哪个。
d. 如果一个组件没有任何的意图过滤器,那它只能接收显式意图。一个带过滤器的组件可以同时接收显式和隐式意图。
相关推荐
【智能家居系统 Intent组件】 Intent组件在Android开发中扮演着至关重要的角色,特别是在构建智能家居系统时。它是连接不同应用或同一应用内不同组件的关键桥梁,负责传递数据和触发操作。本教案将深入探讨Intent...
【Android Intent 组件通信与广播消息】 Intent是Android系统中至关重要的组件通信工具,它扮演着消息传递者的角色,使得应用程序的不同组件(如Activity、Service、BroadcastReceiver)能够相互通信。Intent不仅...
**Intent组件** Intent在Android中扮演着消息传递的角色,它允许应用程序的不同组件之间进行通信。Intent有两种主要类型:显式Intent和隐式Intent。 1. **显式Intent**:这种Intent明确指定了要启动的目标组件...
在Android开发中,Intent是一种非常重要的组件,它用于在应用程序的不同组件之间传递消息,实现活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)以及内容提供者(Content Provider)之间的交互...
标题与描述均指向了“Android各组件详解——Intent”,这一主题深入探讨了Android开发中至关重要的Intent组件。本文将从多个角度解析Intent的功能、应用场景及其内部结构,为开发者提供全面的理解。 ### Intent概述...
移动互联网应用
【Intent组件解析】 Intent在Android系统中扮演着至关重要的角色,它是组件间通信的主要桥梁,负责连接四大组件:Activity、Service、BroadcastReceiver和ContentProvider。Intent不仅能够启动新的Activity,还可以...
智能家居系统应用
Intent 是一个消息传递对象,您可以使用它从其他应用组件请求操作。简单来说Intent就是用于组件(这里的组件自然是四大组件)之间传递消息。 它的基本用途:启动Activity,启动服务,传递广播。
Intent在Android应用程序开发中扮演着至关重要的角色,它是Android系统组件间通信(IPC)的主要机制。通过Intent,开发者能够启动其他Activity、Service,传递数据,甚至执行BroadcastReceiver的动作。在《Android...
Android Intent是 Android 组件间通信的载体,它们之间的通信是通过 Intent 对象在不断传递实现的。Android 的三大核心组件 Activity、Service 和 BroadcastReceiver 都是通过 Intent 对象进行通信的。 Intent 的...
显式Intent是一种明确指出了目标组件名称的Intent,通过指定Intent组件名称来实现的Intent。 知识点1: Intent的定义 Intent是一种在不同组件之间传递请求消息的机制,是应用程序发出的请求和意图。作为一个完整的...
Android 中的 Intent 机制是 Android 应用程序之间通信的基础,Intent 负责描述一次操作的动作、动作涉及数据、附加数据等信息,然后 Android 系统根据 Intent 的描述找到对应的组件,并将 Intent 传递给调用的组件...
Intent 对象包含了接收该 Intent 的组件信息和 Android 系统信息,一般来说,一个完整的 Intent 包含组件的名称、动作、数据、种类、额外和标记等一系列内容。 五、项目实践 通过本教程,读者可以学习如何使用 ...
为了有效地管理这些交互,Android引入了任务栈的概念以及Intent组件作为不同组件和应用间通信的媒介。 任务栈是Android中用于管理活动实例的后进先出(LIFO)栈结构,它帮助管理用户的导航历史和任务。当用户启动一...
在Android开发中,Intent是一种非常重要的机制,它用于在组件之间传递消息,实现应用程序内部或应用程序之间的交互。本文主要探讨如何使用Intent调用常见的系统组件,涵盖了搜索、浏览网页、地图导航、拨打电话、...
1. **隐式Intent**:没有指定具体组件的Intent,系统会根据Intent的信息(Action、Data、Category)匹配最适合的组件。 2. **显式Intent**:指定了具体组件名称的Intent,直接启动指定组件。 **Note Pad Example** ...
2. **Intent组件通信**:阐述Intent如何连接Android的四大组件(Activity、Service、BroadcastReceiver和ContentProvider),以及它们之间的交互方式。 3. **IntentFilter**:解释IntentFilter的概念,它是如何帮助...
在Android开发中,Intent是一种非常重要的组件间通信(IPC)机制。Intent主要用于启动或与其它应用程序组件进行交互,如活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)以及内容提供者...