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

why do we need intent filter in android?

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

  1. 我的隐式意图包含一个操作、数据和类别(可选),我在通过 startActivity 或 startService 发送意图时传递了这些内容。

我们通常会这样做,

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(android.content.Intent.EXTRA_TEXT, "Standing on the Moon!");
startActivity(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>

我的问题是,这两种声明方式是同一个目的,两种不同的声明方式,意义不同吗???

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

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

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