为什么我们需要android中的意图过滤器?
这可能是一个非常愚蠢的问题,但我不太清楚答案为什么我们需要android中的意图过滤器?,android,android-manifest,intentfilter,android-implicit-intent,Android,Android Manifest,Intentfilter,Android Implicit Intent,这可能是一个非常愚蠢的问题,但我不太清楚答案 我的隐式意图包含一个动作、数据和类别(可选),在通过startActivity或startService发送意图时传递该动作、数据和类别 我们通常会这样做 Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(android.content.Intent.EXTRA_TEXT, "Standing on the Moo
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>
我的问题-这两种声明方式是否都是为了相同的目的,它们声明的两种不同方式,它们的意义是否不同?我记得,从清单文件中引用应用程序作为意图过滤器会让其他应用程序知道您有能力处理该意图。因此,如果您能够发送邮件,并且您以这种方式在清单中注册自己,那么另一个应用程序可以使用您的应用程序发送电子邮件 这在gallery应用程序中常见。应用程序很少创建自己的库,除非它们本身是一个库应用程序。因此,他们会询问Android系统有哪些图库/邮件应用程序可用,并让您从列表中选择一个。当您将自己注册为能够处理此意图的应用程序时,您将在下面的列表中找到您的应用程序
我相信这是两者之间的一个主要区别,因为其他应用程序不知道编程实例化。第一个是调用,第二个是声明。这就像说你不需要方法签名,因为你调用了你的方法,所以它们必须存在。启动你自己应用程序的组件时不要使用隐式意图——使用显式意图,显式引用你的ShareActivity.class。不使用隐式意图的原因是,你不能保证你的应用程序组件会被使用,你可能会看到意外的行为。谢谢……这正是我想要的答案。