`
canofy
  • 浏览: 829773 次
  • 性别: Icon_minigender_1
  • 来自: 北京、四川
社区版块
存档分类
最新评论

Intent-filter

阅读更多
Intent-filter 个人理解就是为处理隐式Intent用的,在AndroidManifest.xml声明

Explicit Intents:
Intent serviceIntent = new Intent(context, Test.class);
serviceIntent.putExtra(“param”, param);
context.startService(serviceIntent);


Implicit Intents:
Intent serviceIntent = new Intent();
serviceIntent .setAction("com.demo.DemoActivity");
this.startActivity(serviceIntent );


    应用程序的组件为了告诉Android自己能响应、处理哪些隐式Intent请求,可以声明一个甚至多个Intent Filter。每个Intent Filter描述该组件所能响应Intent请求的能力——组件希望接收什么类型的请求行为,什么类型的请求数据。
应用程序的组件为了告诉Android自己能响应、处理哪些隐式Intent请求,可以声明一个甚至多个Intent Filter。每个Intent Filter描述该组件所能响应Intent请求的能力——组件希望接收什么类型的请求行为,什么类型的请求数据。比如之前请求网页浏览器这个例子中,网页浏览器程序的Intent Filter就应该声明它所希望接收的Intent Action是WEB_SEARCH_ACTION,以及与之相关的请求数据是网页地址URI格式。如何为组件声明自己的Intent Filter? 常见的方法是在AndroidManifest.xml文件中用属性<Intent-Filter>描述组件的Intent Filter。

例子:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
       package="com.android.notepad">
     <application android:icon="@drawable/app_notes"
             android:label="@string/app_name">

         <provider class=".NotePadProvider"
                 android:authorities="com.google.provider.NotePad" />

         <activity class=".NotesList" android:label="@string/title_notes_list">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
             <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
                 <action android:name="android.intent.action.EDIT" />
                 <action android:name="android.intent.action.PICK" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <data android:mimeType="vnd.android.cursor.dir/vnd.google.note" />
             </intent-filter>
             <intent-filter>
                 <action android:name="android.intent.action.GET_CONTENT" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <data android:mimeType="vnd.android.cursor.item/vnd.google.note" />
             </intent-filter>
         </activity>

         <activity class=".NoteEditor" android:label="@string/title_note">
             <intent-filter android:label="@string/resolve_edit">
                 <action android:name="android.intent.action.VIEW" />
                 <action android:name="android.intent.action.EDIT" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <data android:mimeType="vnd.android.cursor.item/vnd.google.note" />
             </intent-filter>

             <intent-filter>
                 <action android:name="android.intent.action.INSERT" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <data android:mimeType="vnd.android.cursor.dir/vnd.google.note" />
             </intent-filter>

         </activity>

         <activity class=".TitleEditor" android:label="@string/title_edit_title"
                 android:theme="@android:style/Theme.Dialog">
             <intent-filter android:label="@string/resolve_title">
                 <action android:name="com.android.notepad.action.EDIT_TITLE" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.ALTERNATIVE" />
                 <category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
                 <data android:mimeType="vnd.android.cursor.item/vnd.google.note" />
             </intent-filter>
         </activity>

     </application>
 </manifest>

分享到:
评论

相关推荐

    Data、Type属性与Intent-filter配置

    在给定的标题“Data、Type属性与Intent-filter配置”中,我们关注的重点是如何通过设置`data`和`type`属性来过滤Intent,以便指定的应用组件(如Activity)能够响应特定的用户操作或系统事件。 `data`属性在Intent-...

    Activity_intent-filter

    当我们说到 "Activity_intent-filter" 时,我们实际上是在讨论如何通过设置 `intent-filter` 来使一个 `Activity` 对特定的 `Intent` 响应。 `Intent` 是Android中的一个消息传递对象,用于在组件之间传递请求或...

    IntentIntent-Filter思维导图

    IntentIntent-Filter思维导图

    Android Intent Filter用法

    在Android应用开发中,Intent Filter是一个至关重要的概念,它用于定义一个组件(如Activity或BroadcastReceiver)能够响应的Intent类型。Intent Filter就像一个过滤器,筛选出应用可以处理的特定操作,使得系统能够...

    android intent and intent-filters

    当发送一个隐式Intent时,AMS会遍历所有声明了对应Intent-filter的组件,使用PackageParser的matchIntent()方法进行匹配,最终找到最合适的组件。 1. 匹配流程: - AMS接收到Intent后,调用`resolveActivity()`...

    intent-action-send.7z

    &lt;/intent-filter&gt; &lt;intent-filter&gt; &lt;action android:name="android.intent.action.SEND" /&gt; &lt;category android:name="android.intent.category.DEFAULT" /&gt; *" /&gt; &lt;/intent-filter&gt; ``` 5. 安全性和隐私: ...

    Android Intent 、intent-filter详解

    参考...,讲解的很好 1.什么是Intent(定义) Intent这个单词的意思就是”意图,目的,意向”,Intent是一种运行时绑定(runtime binding)机制,它能在程序运行的过程中连接两个不同的组件。 个

    android中隐式intent与activity的匹配原则2022优秀文档.pptx

    如果Intent请求或&lt;intent-filter&gt;中没有说明具体的Action类型,那么会出现两种情况:如果&lt;intent-filter&gt;中没有包含任何Action类型,那么无论什么Intent请求都无法和这条&lt;intent-filter&gt;匹配。反之,如果Intent请求...

    intent匹配规则大总结

    `&lt;intent-filter&gt;`标签定义了一个或多个条件(如Action、Category和Data等),用于匹配Intent中的相应字段。当Intent中的字段与`&lt;intent-filter&gt;`中的条件完全匹配时,Activity才可被成功启动。 #### 二、Intent ...

    android基础随手笔记

    2&gt;intent-filter中可以声明多个action &lt;intent-filter&gt; &lt;/intent-filter&gt; 3&gt;如果intent中的action是Intent-filter中 声明的action中的一个,则action匹配成功。 4&gt;如果intent-filter中没有声明任何的action,...

    ImagesWidget.rar

    &lt;intent-filter&gt; android:name="android.intent.action.MAIN" /&gt; android:name="android.intent.category.LAUNCHER" /&gt; &lt;/intent-filter&gt; &lt;intent-filter&gt; android:name="android.appwidget.action.APP...

    Androidmanifest.xml文件分析

    &lt;intent-filter&gt;&lt;/intent-filter&gt; &lt;meta-data/&gt; &lt;/activity-alias&gt; &lt;intent-filter&gt;&lt;/intent-filter&gt; &lt;meta-data/&gt; &lt;intent-filter&gt;&lt;/intent-filter&gt; &lt;meta-data/&gt; &lt;grant-uri-permission/&gt; ...

    Google Android揭秘第三章实例.rar

    &lt;intent-filter&gt; &lt;action android:name="android.intent.action.MAIN" /&gt; android:name="android.intent.category.LAUNCHER" /&gt; &lt;/intent-filter&gt; android:label="@string/app_name_...

    android理论学习——基本概念

    本篇文章将深入探讨"android理论学习——基本概念"中的三个关键要素:Manifest、Content Providers以及Intent和Intent-filter。这些元素构成了Android应用程序的基础架构,使得开发者能够构建功能丰富的移动应用。 ...

    Intent filter 关于Action、Category属性详解源码

    Intent filter 关于Action、Category属性详解源码 对应的博客文章链接: http://blog.csdn.net/a13429921973/article/details/9271973

    Android平台Icon.docx

    这是最基础的方法,通过在`AndroidManifest.xml`文件中为每个需要作为入口点的Activity添加一个特殊的`intent-filter`。`intent-filter`中包含`ACTION_MAIN`和`CATEGORY_LAUNCHER`,这使得Android系统将该Activity...

    Android学习笔记(三四):再谈Intent(上)-一些知识.doc

    在Manifest文件中,`&lt;intent-filter&gt;`标签用于定义Activity可以响应的Intent类型。例如: ```xml &lt;intent-filter&gt; &lt;action android:name="android.intent.action.MAIN" /&gt; &lt;category android:name="android....

    Manifest详解

    AndroidManifest.xml 是 Android 应用程序中最重要的文件之一,它位于项目的根目录,描述了应用程序中的组件、权限、Intent-filter 和其他配置信息。下面是对 AndroidManifest.xml 的详细解释: 一、...

Global site tag (gtag.js) - Google Analytics