没有动作的意图无法通过意图过滤器测试。为什么?

时间:2014-12-02 13:22:52

标签: android android-intent

请参阅有关IntentFilters的文档:

要通过此测试,Intent对象中指定的操作必须与过滤器中列出的操作之一匹配。如果对象或过滤器未指定操作,则结果如下:

如果过滤器未能列出任何操作,则没有任何意图匹配,因此所有意图都无法通过测试。没有意图可以通过过滤器。

另一方面,没有指定操作的Intent对象会自动通过测试 - 只要过滤器包含至少一个操作。

在我的代码中,

Intent intent = new Intent();
    startActivity(intent);


<activity
        android:name=".MainActivity2"
        android:label="@string/title_activity_main_activity2" >

        <intent-filter>
            <action android:name="fdsfds.hihi" />
            <category android:name="android.intent.category.DEFAULT" />

        </intent-filter>
</activity>

为什么我的意图无法启动.MainActivity2?

2 个答案:

答案 0 :(得分:0)

Intent intent = new Intent();
intent.setAction("fdsfds.hihi");
startActivity(intent);

答案 1 :(得分:0)

这可能为时已晚,无法得到答案。我降落在这里是因为我和你有着同样的怀疑。我想你和我一样犯了同样的错误。我将意图对象意图过滤器混淆了。但仔细阅读文档后,我的疑问得到了解决。

因此,如果意图对象(您创建的意图反对意图)未指定任何操作,但 intent-filter (在清单文件中)列出至少一个操作,您的意图将通过 操作测试。 虽然它将通过其余的测试以进行意图匹配,但没有任何保证。

您尚未在过滤器中列出任何操作,因此所有操作测试都将失败(并且通过扩展,意图匹配将失败)。