为什么我们需要android中的intent过滤器?

时间:2015-07-20 18:51:35

标签: android android-manifest intentfilter android-implicit-intent

这可能是一个非常愚蠢的问题,但我对答案并不十分清楚。

  1. 我的隐含意图包含一个动作,数据& category(可选),我在通过startActivity或startService发送intent时传递。
  2. 我们通常会这样做,

    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("text/plain");
    intent.putExtra(android.content.Intent.EXTRA_TEXT, "Standing on the Moon!");
    startActivity(intent);
    

    然后我们以不同的方式完成相同的操作,使用清单文件中的intent过滤器,如

    <activity android:name="ShareActivity">
        <intent-filter>
            <action android:name="android.intent.action.SEND"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <data android:mimeType="text/plain"/>
        </intent-filter>
    </activity>
    

    我的问题 - 既是声明这是出于同一目的的两种方式,它们被宣布的两种不同方式,它们具有不同的意义吗?

1 个答案:

答案 0 :(得分:4)

我记得,将您的应用程序作为清单文件中的意图过滤器引用将让其他应用程序知道您能够处理该意图。因此,如果您能够发送邮件并且您在清单中以这种方式注册,则另一个应用程序可以使用您的邮件发送电子邮件。

这经常出现在图库应用程序中。应用程序很少创建自己的应用程序,除非它们本身是图库应用程序。因此,他们会向Android系统询问哪些图库/邮件应用程序可用,并让您从列表中选择一个。当您将自己注册为能够处理此意图的应用程序时,您将在此列表中找到您的应用程序。

我确实认为这是两者之间的一个主要区别,因为其他应用程序不知道程序化实例化。