从Pro Android 2书中:“ComponentName将包名称和类名称包装在一起。例如......”
Intent intent = new Intent();
Intent.setCompnonet(new ComponentName(
"com.android.contacts"
,"com.android.contacts.DialContactsEntryActivity");
startActivity(intent)
如果您查看示例,您会注意到包名称可以轻松从类名派生。所以显而易见的问题是:为什么有两个参数?为什么不只提供班级名称?
是否存在传递给ComponentName构造函数的类属于传递给同一构造函数的包的情况?
答案 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()));