为什么上下文传递给Intent的构造函数?

时间:2013-10-26 20:16:01

标签: java android

我想了解为什么我们将Context实例传递给Intent构造函数?为什么new Intent(SomeActivity.class)不够? Android会强制执行某些限制吗?

我试图查看代码,但我发现它只是获取包名。

Intent documentation

2 个答案:

答案 0 :(得分:3)

要明确识别Android应用程序中的活动,您需要同时拥有应用程序的名称(也称为Android应用程序包)和活动的全名(java包名称+活动类的类名称)。这些正是您在构造函数中提供的两个参数。 Context用于获取Android应用程序包名称,而类用于获取完整的类名。

具有相同全名的活动可以在两个应用程序中使用。如果您不提供Context,那么Android将不知道某个活动属于哪个应用程序。

答案 1 :(得分:1)

正如您所猜测的,构造函数中的Context用于获取应用程序的包名称。

SomeActivity.class.getPackage().getName()中从类中推断包名称并不是在每种情况下都有效,因为它可能与应用程序的包名称不同。