2011-02-25 41 views
15

从Pro Android的2本书:“组件名包一个包名字联系在一起。例如......”为什么两个参数组件名称构造?

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

如果你看一下例子,你会发现,包名称可以是容易从类名的。所以显而易见的问题是:为什么两个参数?为什么不提供只有类名?

有没有一个场景,其中传递给ComponentName构造函数的类不是属于传递给相同构造函数的包?

+0

是否只有“.DialContactsEntryActivity”工作作为类的名字吗? – 2011-03-01 21:18:16

回答

25

应用程序组件可以应用其包名称(在其Android清单声明)是从Java包定义组件的特定类完全不同的范围内存在。一个例子是在谷歌地图应用程序MapsActivity:

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

我认为这将是一个解释,但我需要一个权威的答案(用一个例子,比如你带来了一个)。谢谢。 – 2011-03-14 16:43:33

1

或:

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