关于IntentFilter的几点注意事项:

http://blog.csdn.net/cnnumen/article/details/8464786

IntentFilter就是用于描述intent的各种属性, 比如action, category等

一些属性设置的例子:

<action android:name="com.example.project.SHOW_CURRENT" />

<category android:name="android.intent.category.DEFAULT" />

<data android:mimeType="video/mpeg" android:scheme="http" . . . />

<data android:mimeType="image/*" />

<data android:scheme="http" android:type="video/*" />

关于IntentFilter的几点注意事项

(1).android.intent.action.MAIN 与 android.intent.category.LAUNCHER

android.intent.action.MAIN决定一个应用程序最先启动那个组件

android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里(说白了就是是否在桌面上显示一个图标)

这两个属性组合情况:

第一种情况:有MAIN,无LAUNCHER,程序列表中无图标

原因:android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里

第二种情况:无MAIN,有LAUNCHER,程序列表中无图标

原因:android.intent.action.MAIN决定应用程序最先启动的Activity,如果没有Main,则不知启动哪个Activity,故也不会有图标出现

所以这两个属性一般成对出现。

如果一个应用中有两个组件intent-filter都添加了android.intent.action.MAIN和

android.intent.category.LAUNCHER这两个属性, 则这个应用将会显示两个图标, 写在前面的组件先运行。

(2).关于隐式intent

每一个通过 startActivity() 方法发出的隐式 Intent 都至少有一个 category,就是 "android.intent.category.DEFAULT",所以只要是想接收一个隐式 Intent 的 Activity 都应该包括 "android.intent.category.DEFAULT" category,不然将导致 Intent 匹配失败.

比如说一个activity组件要想被其他组件通过隐式intent调用, 则其在manifest.xml中的声明如下:

<activity android:name="com.gesture.QGestureListActivity">

<intent-filter>

<action android:name="com.google.test" />

<category android:name="android.intent.category.DEFAULT" />

</intent-filter>

</activity>

(3).关于intent-filter匹配优先级

首先查看Intent的过滤器(intent-filter),按照以下优先关系查找:action->data->category

(4).android.intent.category.LAUNCHER与android.intent.category.HOME的区别

android.intent.category.LAUNCHER:android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里,就是android开机后的主程序列表。

android.intent.category.HOME:按住“HOME”键,该程序显示在HOME列表里。

时间: 2024-12-17 09:47:47

关于IntentFilter的几点注意事项:的相关文章

[转]Intent和IntentFilter详解

Intent   Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用.Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互.因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦.在SDK中给出了I

Android两个注意事项.深入了解Intent和IntentFilter(两)

深入理解Intent和IntentFiler(二) 转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 在上一篇文章中,我们比較具体学习了"Intent"的相关知识,如今将学习怎样设置Intent对象的这些属性以及怎样使用他们来启动组件. Intent对象是一组信息,我们能够通过设置其Action.Data.Category属性来指定启动哪个组件并完毕什么样的动作(包括动作所需的数据). "意图"分为显示intent

EventBus使用详情、源码分析和注意事项

基本介绍 EventBus主要用于事件的订阅和发布,主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.官方文档介绍了EventBus的很多优点,归纳一下就是三个优点:小,快和方便.以下会围绕初步使用.使用进阶.源码分析和注意事项来讲解,如果需要快速上手,只要看完初步使用和注意事项就可以了. 初步使用 EventBus的使用非常简单,主要使用到以下三个方法: //注册EventBus EventBus.getDef

android intentFilter 匹配规则

1 概述 activity的启动分为隐式和显式两种,要使用隐式的启动,那么intentFilter是非常重要的一个知识点. 这里将讲解intentFilter的匹配规则. 2 基本形式 <activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true" android:taskAffi

最新百度地图支持Fragment(注意事项)(转)

原文: 最新百度地图支持Fragment(注意事项) 开篇:老的百度地图通常都要继承MapActivity,这样不利于代码的可扩展性,再加上Fragment的流行,老的百度地图已经远远不能满足的大家的需求,于是新版百度地图问世了.它不再需要继承MapActivity,开发者们可以随心而欲地去使用它们了. 注意事项:1.如果要使用新的百度地图API,就要申请新的Key(老版本的百度地图对应老key,百度官方表示仍然可用).     点击这里进入申请新key的网址(百度官方网址) 2.新Key机制:

Broadcast Receiver注意事项

静态注册 <receiver android:name=".MyReceiver" android:enabled="true"> <intent-filter> <action android:name="myAction" /> </intent-filter> </receiver> 动态注册 @Override protected void onStart() { super.o

#Android-中控指纹仪Live R20 开发注意事项#

Android-中控指纹仪Live R20 开发注意事项 一.所需设备 1.一台支持USB接口的Android设备,某宝上面有的.例如: (这个屏幕大约32寸,操作系统是Android 5.1,支持触摸,支持USB接口,两个USB接口,支持插网线,支持打王者荣耀,吃鸡等~) 这个超级重的倒是真的,只能挂墙上打. 2.一个或者两个指纹仪,这个指纹仪型号是Live R20的例如: 附带USB接头. 二.所需JAR包 1.导入架包 架包怎么导入自己的Android工程项目里面我就不说了. 2.架包大致

面向对象注意事项

在面向对象中,有实例变量和类变量,实例变量为类对象的实例成员,而类变量不仅类可以直接调用,而且类的对象也可以调用.类对象可以对实例变量进行添加.修改.删除操作等... 下面就用个示例来做参考: #!/usr/bin/env python # -*- coding:utf-8 -*- class PersonInfo(object): commity_data = 123 def __init__(self,name,age): self.name = name self.age = age de

switch使用时有哪些注意事项

switch语句用于多分支选择,在使用switch(expr)的时候,expr只能是一个枚举常量(内部也是由整型或字符类型实现)或一个整数表达式,其中整数表达式可以是基本类型int或其对应的包装类Integer,当然也包括不同的长度整型,例如short.由于byte.short和char都能够被隐式地转换为int类型,因此这些类型以及它们对应的包装类型都可以作为switch的表达式.但是,long.float.double.String类型由于不能够隐式地转换为int类型,因此它们不能被用作sw