2012-09-04 91 views
22

根据Android文档Intent额外名称必须有包前缀。我一直使用Intent额外名称而且没有前缀很长一段时间,似乎没有碰撞的机会,因为真正重要的是Intent行为是唯一的。那么这些文档是错的还是我错过了一些东西?为什么Android文档说意图额外需要包前缀

putExtra文档说:

扩展数据添加到意图。该名称必须包含包前缀,例如com.android.contacts应用程序将使用“com.android.contacts.ShowAll”之类的名称。

回答

17

我相信Android文档推荐使用完全合格的演员来处理不常见的边缘情况。边缘的情况是,当你:

  • 编写,可以使用公共意图的动作,如Intent.ACTION_VIEW

  • 对于你希望你自己的使用开始的活动能够将自定义附加功能传递到上述活动,而不会干扰正在做同样事情的其他活动,并且可能具有相同名称但含义不同或格式不同的其他活动

唷,这一切听起来都不太可能。如果你没有处理公开的意图行为,那么它似乎仍然没有必要完全限定你的额外行为,但是如果你是偏执狂类型的话,我认为它始终没有伤害。

+1

难道你不只是提供一个额外的包?在类似这样的情况下,您最好首先检查其原始包,然后基于此处理Extras,除非某些发送的活动可以添加其他发送活动的含义(这可能最终导致混乱,但如果您设置某种代理活动或服务来操纵其传递的意图的附加内容,可能会有用。 – JAB

+0

我同意@JAB。默认情况下,您不会基于请求者处理任何不同的“额外”意图数据,但如果您要这样做,则需要提供包名称作为额外的“额外”意图数据,所以你可以很容易地区分**和**验证? –

+0

您可以提供并要求您的软件包名称作为又一个额外的内容,并且可以确保您的应用程序安全,但其他应用程序不会检查该非标准附加内容。因此,如果您使用公开意向操作,并未完全限定所有非标准附加名称,则可能会破坏其他应用程序。 – satur9nine

2

意图可以传递到其他应用程序和它自己的系统,所以礼貌是使用包名称空间。

+5

我不明白为什么它会礼貌。为什么系统或其他应用程序正在看我的演员,他们不应该盲目地传递它吗?其次,这个动作有包名,为什么每一个额外都需要它? – satur9nine

相关问题