【发布时间】:2015-10-10 00:40:09
【问题描述】:
这可能是一个非常愚蠢的问题,但我不太清楚答案。
- 我的隐式意图包含一个操作、数据和类别(可选),我在通过 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>
我的问题 - 两种声明方式是出于相同目的,两种不同的声明方式,它们是否具有不同的意义???
【问题讨论】:
-
第一个是调用,第二个是声明。这就像说你不需要方法签名,因为你调用了你的方法,所以它们必须存在。
-
在启动您自己的应用程序的组件时不要使用隐式 Intent - 使用显式引用您的 ShareActivity.class 的显式 Intent。不使用隐式 Intent 的原因是你不能保证你的应用组件会被使用,你可能会看到意想不到的行为。
标签: android android-manifest intentfilter android-implicit-intent