Почему два параметра для конструктора ComponentName?
Из книги Pro Android 2: "ComponentName объединяет имя пакета и имя класса вместе. Например..."
Intent intent = new Intent();
Intent.setCompnonet(new ComponentName(
"com.android.contacts"
,"com.android.contacts.DialContactsEntryActivity");
startActivity(intent)
Если вы посмотрите на пример, вы заметите, что имя пакета можно легко получить из имени класса. Итак, очевидный вопрос: почему два параметра? Почему бы не указать только имя класса?
Есть ли сценарий, в котором класс, переданный конструктору ComponentName , не принадлежит к пакету, переданному одному конструктору?
Ответы
Ответ 1
Компонент приложения может существовать в приложении, чье имя пакета (объявленное в манифесте Android) полностью отличается от пакета Java для конкретного класса, который определяет компонент. Например, MapsActivity в приложении Google Maps:
intent.setComponent(new ComponentName("com.google.android.apps.maps",
"com.google.android.maps.MapsActivity"));
Ответ 2
или
intent.setComponent(new ComponentName("com.google.android.apps.maps",
MapsActivity.class.getName()));