android中intent-filter的分析和具体使用用例
2017-02-02 21:52
288 查看
意图过滤器(intent-filter)由清单文件中的元素定义,嵌入在相应的应用组件里(例如元素),在元素里,你可以使用这3个元素中的一个或多个来指定接收的意图类型:
<action>在name属性里,声明接收的意图操作,值必须是操作的纯字符串,不是类常量
<data>使用一个或多个属性来声明接收的数据类型,他们表示数据uri,和MIME类型的各个部分
<category>在name属性里声明意图分类,值必须是操作的纯字符串,不是类常量
注意:为了接收隐式意图,必须在意图过滤器中包含CATEGORY_DEFAULT分类,startActivity()和startActivityForResult()方法认为所有意图都包含了CATEGORY_DEFAULT分类,如果你在意图过滤器中没有声明这个分类,那么没有隐式意图会解析你的活动。
意图过滤器的完整使用示例:
注意:为了让活动出现在应用启动里,action_MAIN和category_LAUNCHER必须配对在一起,如果只有一个activity的应用程序只声明了android.intent.action.MAIN,没有声明android.intent.category.LAUNCHER,eclipse运行将报错。
<action>在name属性里,声明接收的意图操作,值必须是操作的纯字符串,不是类常量
<data>使用一个或多个属性来声明接收的数据类型,他们表示数据uri,和MIME类型的各个部分
<category>在name属性里声明意图分类,值必须是操作的纯字符串,不是类常量
注意:为了接收隐式意图,必须在意图过滤器中包含CATEGORY_DEFAULT分类,startActivity()和startActivityForResult()方法认为所有意图都包含了CATEGORY_DEFAULT分类,如果你在意图过滤器中没有声明这个分类,那么没有隐式意图会解析你的活动。
意图过滤器的完整使用示例:
<activity android:name=".MainActivity"> <!-- 将其标记为主活动--> <intent-filter> <category android:name="android.intent.category.LAUNCHER" /> <action android:name="android.intent.action.MAIN" /> <!-- action.MAIN表明操作是主入口点,不期望任何意图数据--> <!-- category.LAUNCHER表示应该放到系统应用启动里的活动图标,如果该元素没有用icon属性指定图标,那么系统用该元素图标--> </intent-filter> </activity> <activity android:name=".SecondActivity"> <!-- SecondActivity实现一些文本数据,多媒体文件等操作--> <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <action android:name="android.intent.action.SEND" /> <data android:mimeType=”text/plain”/> </intent-filter> <intent-filter> <!-- 再设置一个意图过滤器用来处理一些视频,图片等媒体数据--> <category android:name="android.intent.category.DEFAULT" /> <action android:name="android.intent.action.SEND" /> <action android:name="android.intent.action.SEND_MULTIPLE" /> <data android:mimeType=”application/vnd.google.panorama360+jpg”/> <!-- 注意,MIME类型,application/vnd.google.panorama360+jpg,是指定全景相片的特定数据类型,可以使用谷歌全景API来处理它-> <data android:mimeType=”image/*”/> <data android:mimeType=”video/*”/> </intent-filter> </activity>
注意:为了让活动出现在应用启动里,action_MAIN和category_LAUNCHER必须配对在一起,如果只有一个activity的应用程序只声明了android.intent.action.MAIN,没有声明android.intent.category.LAUNCHER,eclipse运行将报错。
相关文章推荐
- Android学习13--使用Intent和IntentFilter进行通信
- Android中Intent和Intent Filter 原理与使用详解
- 关于androidManifest.xml的概叙以及intent-filter的详细分析
- android IntentFilter 使用之 data过滤
- 【Android】intent-filter里data匹配分析
- Android 程式开发:(四)使用Intent调用“内置”应用 —— 4.3配置Intent-Filter
- Android基础之intent-filter、action、category标签使用
- Android中IntentService源码分析及其使用
- Android IntentService的使用和源码分析
- Android IntentService使用及原理分析
- android IntentFilter 使用之 data过滤
- Android IntentService的使用和源码分析
- Android中使用Intent和IntentFilter进行通信
- Android 从具体实例分析Bitmap使用时候内存注意点
- Android Intent Filter简单使用
- Android Intent Filter简单使用
- Android 4.4 KitKat NotificationManagerService使用具体解释与原理分析(一)__使用具体解释
- Android开发:IntentService使用(源码分析)
- 使用极光推送时报错[AndroidUtil] AndroidManifest.xml missing intent filter for DaemonService
- Android Intent-Filter分析