为什么两个参数到ComponentName构造函数?

时间:2011-02-25 21:48:37

标签: android android-intent

从Pro Android 2书中:“ComponentName将名称和名称包装在一起。例如......”

Intent intent = new Intent();
Intent.setCompnonet(new ComponentName(
    "com.android.contacts"
    ,"com.android.contacts.DialContactsEntryActivity");
startActivity(intent)

如果您查看示例,您会注意到包名称可以轻松从类名派生。所以显而易见的问题是:为什么有两个参数?为什么不只提供班级名称?

是否存在传递给ComponentName构造函数的类属于传递给同一构造函数的包的情况?

2 个答案:

答案 0 :(得分:27)

应用程序组件可能存在于一个应用程序中,该程序包的名称(在其Android清单中声明)与定义该组件的特定类的Java包完全不同。一个例子是Google Maps应用程序中的MapsActivity:

intent.setComponent(new ComponentName("com.google.android.apps.maps", 
    "com.google.android.maps.MapsActivity"));

答案 1 :(得分:1)

或:

intent.setComponent(new ComponentName("com.google.android.apps.maps", 
MapsActivity.class.getName()));