【问题标题】:Unable to get implicit intents to work无法获得隐含的工作意图
【发布时间】:2011-09-26 02:14:41
【问题描述】:

我正在学习如何将隐式意图与意图过滤器一起使用,但到目前为止还无法触发正确的活动。用于触发意图的代码是:

intent = new Intent();
intent.setAction("com.appsculture.intent.action.PLUGIN_RECEIVER");
startActivity(intent);

所需活动的 Intent 过滤器是:

<activity android:name="PluginReceiver">
<intent-filter>
    <action android:name="com.appsculture.intent.action.PLUGIN_RECEIVER"></action>
</intent-filter>
</activity>

我得到的错误是标准的 ActivityNotFound

09-04 17:15:27.827: ERROR/AndroidRuntime(2552): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.appsculture.intent.action.PLUGIN_RECEIVER }

解决方案:只需将 android.intent.category.DEFAULT 类别添加到意图过滤器

在那之后就像一个魅力

【问题讨论】:

    标签: android android-intent


    【解决方案1】:

    我设法通过简单地将 android.intent.category.DEFAULT 类别添加到意图过滤器来解决这个问题。之后就像一个魅力。

    正如 Commonsware 在对他的回答的评论中指出的那样,活动需要一个类别,但服务或广播接收器不需要。

    【讨论】:

      【解决方案2】:

      尽管我会使用 new Intent("com.appsculture.intent.action.PLUGIN_RECEIVER"),但您所拥有的一切都应该没问题,而 RECEIVER 的使用对于 Activity 而不是 BroadcastReceiver 来说似乎是一个奇怪的动作名称。

      如果它们位于两个单独的应用程序中,请确保它们都安装在您的设备或模拟器上,并使用最新的代码(即,您没有进行更改,然后无法安装更新的应用程序)。

      【讨论】:

      • 嗨 CommonsWare,我之前使用过你建议的 Intent 定义(我只切换到了 intent.setAction,因为之前的方法一直失败)。结果是相同的 ActivityNotFoundException。两个活动都属于同一个应用程序,因此问题不在于它们是否已更新。我知道命名不是最好的,我会考虑改变它。这个名字主要是我觉得最适合活动目的的名字。
      • 我已经发布了我找到的问题的解决方案
      • 啊,有趣。对于服务和广播接收器的自定义操作,您不需要类别。我忘了你需要一个活动。我很抱歉错过了这个。
      猜你喜欢
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多