先看效果图:

1、Action:该activity可以执行的动作

该标识用来说明这个activity可以执行哪些动作,所以当隐式intent传递过来action时,如果跟这里<intent-filter>所列出的任意一个匹配的话,就说明这个activity是可以完成这个intent的意图的,可以将它激活!

常用的Action如下所示:

ACTION_CALL activity 启动一个电话.

ACTION_EDIT activity 显示用户编辑的数据.

ACTION_MAIN activity 作为Task中第一个Activity启动

ACTION_SYNC activity 同步手机与数据服务器上的数据.

ACTION_BATTERY_LOW broadcast receiver 电池电量过低警告.

ACTION_HEADSET_PLUG broadcast receiver 插拔耳机警告

ACTION_SCREEN_ON broadcast receiver 屏幕变亮警告.

ACTION_TIMEZONE_CHANGED broadcast receiver 改变时区警告.

两条原则:

一条<intent-filter>元素至少应该包含一个<action>,否则任何Intent请求都不能和该<intent-filter>匹配。

如果Intent请求的Action和<intent-filter>中个任意一条<action>匹配,那么该Intent就可以激活该activity(前提是除了action的其它项也要通过)。

两条注意:

如果Intent请求或<intent-filter>中没有说明具体的Action类型,那么会出现下面两种情况。如果<intent-filter>中没有包含任何Action类型,那么无论什么Intent请求都无法和这条<intent-filter>匹配。 反之,如果Intent请求中没有设定Action类型,那么只要<intent-filter>中包含有Action类型,这个Intent请求就将顺利地通过<intent-filter>的行为测试。

2、Category:指定当前动作(Action)被执行的环境

即这个activity在哪个环境中才能被激活。不属于这个环境的,不能被激活。

常用的Category属性如下所示:

CATEGORY_DEFAULT:Android系统中默认的执行方式,按照普通Activity的执行方式执行。表示所有intent都可以激活它 

CATEGORY_HOME:设置该组件为Home Activity。

CATEGORY_PREFERENCE:设置该组件为Preference。 

CATEGORY_LAUNCHER:设置该组件为在当前应用程序启动器中优先级最高的Activity,通常为入口ACTION_MAIN配合使用。 

CATEGORY_BROWSABLE:设置该组件可以使用浏览器启动。表示该activity只能用来浏览网页。 

CATEGORY_GADGET:设置该组件可以内嵌到另外的Activity中。

注意:如果该activity想要通过隐式intent方式激活,那么不能没有任何category设置,至少包含一个android.intent.category.DEFAULT

三 附《Intent调用常见系统组件方法》

// 调用浏览器  

Uri webViewUri = Uri.parse("http://blog.csdn.net/zuolongsnail");  

Intent intent = new Intent(Intent.ACTION_VIEW, webViewUri);  

// 调用地图  

Uri mapUri = Uri.parse("geo:100,100");  

Intent intent = new Intent(Intent.ACTION_VIEW, mapUri);  

// 播放mp3  

Uri playUri = Uri.parse("file:///sdcard/test.mp3");  

Intent intent = new Intent(Intent.ACTION_VIEW, playUri);  

intent.setDataAndType(playUri, "audio/mp3");  

// 调用拨打电话  

Uri dialUri = Uri.parse("tel:10086");  

Intent intent = new Intent(Intent.ACTION_DIAL, dialUri);  

// 直接拨打电话,需要加上权限<uses-permission id="android.permission.CALL_PHONE" />  

Uri callUri = Uri.parse("tel:10086");  

Intent intent = new Intent(Intent.ACTION_CALL, callUri);  

// 调用发邮件(这里要事先配置好的系统Email,否则是调不出发邮件界面的)  

Uri emailUri = Uri.parse("mailto:zuolongsnail@163.com");  

Intent intent = new Intent(Intent.ACTION_SENDTO, emailUri);  

// 直接发邮件  

Intent intent = new Intent(Intent.ACTION_SEND);  

String[] tos = { "zuolongsnail@gmail.com" };  

String[] ccs = { "zuolongsnail@163.com" };  

intent.putExtra(Intent.EXTRA_EMAIL, tos);  

intent.putExtra(Intent.EXTRA_CC, ccs);  

intent.putExtra(Intent.EXTRA_TEXT, "the email text");  

intent.putExtra(Intent.EXTRA_SUBJECT, "subject");  

intent.setType("text/plain");  

Intent.createChooser(intent, "Choose Email Client");  

// 发短信  

Intent intent = new Intent(Intent.ACTION_VIEW);  

intent.putExtra("sms_body", "the sms text");  

intent.setType("vnd.android-dir/mms-sms");  

// 直接发短信  

Uri smsToUri = Uri.parse("smsto:10086");  

Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri);  

intent.putExtra("sms_body", "the sms text");  

// 发彩信  

Uri mmsUri = Uri.parse("content://media/external/images/media/23");  

Intent intent = new Intent(Intent.ACTION_SEND);  

intent.putExtra("sms_body", "the sms text");  

intent.putExtra(Intent.EXTRA_STREAM, mmsUri);  

intent.setType("image/png");  

// 卸载应用  

Uri uninstallUri = Uri.fromParts("package", "com.app.test", null);  

Intent intent = new Intent(Intent.ACTION_DELETE, uninstallUri);  

// 安装应用  

Intent intent = new Intent(Intent.ACTION_VIEW);  

intent.setDataAndType(Uri.fromFile(new File("/sdcard/test.apk"), "application/vnd.android.package-archive");  

// 在Android Market中查找应用  

Uri uri = Uri.parse("market://search?q=愤怒的小鸟");           

Intent intent = new Intent(Intent.ACTION_VIEW, uri);

Demo源码

package mm.shandong.com.testactioncate;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View; public class TestActionCateActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_action_cate);
}
//启动activityTestComponentOtherActivity,设置intent的action为
//TestComponentOtherActivity1
public void startActivityToAction1(View view) {
Intent intent = new Intent();
intent.setAction("TestComponentOtherActivity1");
startActivity(intent);
}
//启动activityTestComponentOtherActivity,设置intent的action为
//TestComponentOtherActivity2
public void startActivityToAction2(View view) {
Intent intent = new Intent();
intent.setAction("TestComponentOtherActivity2");
startActivity(intent);
}
//启动activityTestComponentOtherActivity,设置intent的action为
//TestComponentOtherActivity3
public void startActivityToAction3(View view) {
Intent intent = new Intent();
intent.setAction("TestComponentOtherActivity3");
startActivity(intent);
}
//启动action为sameAction的activity,有两个activity设置了相同
//的action
public void startActivitySameAction1(View view) {
Intent intent = new Intent();
intent.setAction("sameAction");
startActivity(intent);
}
//启动action为Intent.ACTION_VIEW的activity,
// 系统浏览器的activity也设置了这个action
public void startActivitySameAction2(View view) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
startActivity(intent);
}
//启动一个设置了三个category的activity,这个category必须全都设置,
//才能启动
public void startActivityCategory(View view) {
Intent intent = new Intent();
intent.setAction("TestActionCate3Activity");
intent.addCategory("category1");
intent.addCategory("category2");
intent.addCategory("category3");
startActivity(intent);
} }

 

本人微博:honey_11

Demo下载
最后,以上例子都来源与安卓无忧,请去应用宝或者豌豆荚下载:例子源码,源码例子文档一网打尽

Intent属性详解二 Action、Category的更多相关文章

  1. Android零基础入门第80节:Intent 属性详解(下)

    上一期学习了Intent的前三个属性,本期接着学习其余四个属性,以及Android系统常用内置组件的启动. 四.Data和Type属性 Data属性通常用于向Action属性提供操作的数据.Data属 ...

  2. Android零基础入门第79节:Intent 属性详解(上)

    Android应用将会根据Intent来启动指定组件,至于到底启动哪个组件,则取决于Intent的各属性.本期将详细介绍Intent的各属性值,以及 Android如何根据不同属性值来启动相应的组件. ...

  3. Intent属性详解三 data、type和extra

    1 Data  执行时要操作的数据 在目标<data/>标签中包含了以下几种子元素,他们定义了url的匹配规则: android:scheme 匹配url中的前缀,除了“http”.“ht ...

  4. Intent属性详解一 component属性

    先看效果图 概述 在介绍Component之前,我们首先来了解ComponentName这个类:ComponentName与Intent同位于android.content包下,我们从Android官 ...

  5. OutputCache属性详解(二)一 Location

    目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...

  6. Intent知识详解

    Intent知识详解 一.什么是Intent 贴一个官方解释: An intent is an abstract description of an operation to be performed ...

  7. Android开发–Intent-filter属性详解

    Android开发–Intent-filter属性详解 2011年05月09日 ⁄ Andriod ⁄ 暂无评论 ⁄ 被围观 1,396 views+ 如果一个 Intent 请求在一片数据上执行一个 ...

  8. Android View 的绘制流程之 Layout 和 Draw 过程详解 (二)

    View 的绘制系列文章: Android View 的绘制流程之 Measure 过程详解 (一) Android View 绘制流程之 DecorView 与 ViewRootImpl 在上一篇  ...

  9. Flask request 属性详解

    Flask request 属性详解 一.关于request在Flask的官方文档中是这样介绍request的:对于 Web 应用,与客户端发送给服务器的数据交互至关重要.在 Flask 中由全局的 ...

随机推荐

  1. Android搜索框效果

    转载:http://blog.csdn.net/walker02/article/details/7917392 需求:项目中的有关搜索的地方,加上清空文字的功能,目的是为了增加用户体验,使用户删除文 ...

  2. PopupWindow底部弹出

    说明:从屏幕底部弹出PopupWindow,有弹出隐藏动画效果.背景设置透明度. 效果图如下: 1.MainActivity.java   显示popwindow,宽高跟屏幕大小一样,设置一个透明度背 ...

  3. C算法编程题(二)正螺旋

    前言 上一篇<C算法编程题(一)扑克牌发牌> 写东西前总是喜欢吐槽一些东西,还是多啰嗦几句吧,早上看了一篇博文<谈谈外企涨工资那些事>,里面楼主讲到外企公司包含的五类人,其实不 ...

  4. IO通道

    本文原创,转载需标明原处. 通道,主要负责传输数据,相当于流,但流只能是输入或输出类型中的其一,而通道则可以兼并二者. 通道的基类是:Channel boolean isOpen() void clo ...

  5. 真正解决问题:maven eclipse tomcat java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener--转

    原文地址:http://www.cnblogs.com/amosli/p/4067665.html 在使用eclipse进行整合springmvc时经常会碰到这样的异常: java.lang.Clas ...

  6. 使用FileSystemWatcher监控文件夹及文件

    引言 这一周主要精力集中学习一个同事开发的本地文件搜索项目上,其中客户端添加共享文件时主要是使用FileSystemWatcher 监控文件,并在各种事件发生时向服务器发送消息. 解决方法 FileS ...

  7. AppCan学习笔记--数据存储及listview简单应用

    AppCan AppCan开发平台简介 AppCan是Hybrid App开发框架即混合开发框架,有官方提供底层功能使用API HTML5和JavaScript只是作为一种解析语言,真正调用的都是Na ...

  8. Fragment基础----创建

    1,Fragment的目的及应用场景 fragment 是3.0后引入的类,其字面翻译为“碎片”. 目的是将activity划分成许多单元再进行组合,可以根据不同分辨率屏幕,在不同状态下,灵活创建优化 ...

  9. TF-IDF提取行业关键词

    1. TF-IDF简介 TF-IDF(Term Frequency/Inverse Document Frequency)是信息检索领域非常重要的搜索词重要性度量:用以衡量一个关键词\(w\)对于查询 ...

  10. .NET Core New csproj 如何发布可执行文件

    一.前言 .NET工具链在最新的Preview3版本中,引入了新的MSBuild项目系统,项目文件又回归了.csproj的XML文件来管理,项目文件.包引用.程序集引用..NET Core工具集.发布 ...