diff --git a/plugins/android/resources/messages/AndroidBundle.properties b/plugins/android/resources/messages/AndroidBundle.properties index cdb316e5daf1..d6b9192bdc61 100644 --- a/plugins/android/resources/messages/AndroidBundle.properties +++ b/plugins/android/resources/messages/AndroidBundle.properties @@ -56,7 +56,8 @@ create.global.library=Create Glob&al library ''{0}'' create.library.dialog.title=Create Android library select.target.dialog.text=Please select Android Target default.activity.not.found.error=Default Activity not found -activity.not.launchable.error=The Intent Filter of the Activity must contain {0} action +activity.not.launchable.error=The intent-filter of the activity must contain {0} action +activity.not.declared.in.manifest=The activity ''{0}'' is not declared in AndroidManifest.xml new.typed.resource.command.name=New {0} resource file new.typed.resource.dialog.title=New {0} Resource File new.file.dialog.text=Enter a new file name diff --git a/plugins/android/src/org/jetbrains/android/run/AndroidRunConfiguration.java b/plugins/android/src/org/jetbrains/android/run/AndroidRunConfiguration.java index 67f08f294ceb..08cfe118036a 100644 --- a/plugins/android/src/org/jetbrains/android/run/AndroidRunConfiguration.java +++ b/plugins/android/src/org/jetbrains/android/run/AndroidRunConfiguration.java @@ -26,7 +26,6 @@ import com.intellij.execution.process.ProcessHandler; import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.execution.ui.ConsoleView; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.module.Module; import com.intellij.openapi.options.SettingsEditor; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; @@ -82,7 +81,12 @@ public class AndroidRunConfiguration extends AndroidRunConfigurationBase impleme if (!c.isInheritor(activityClass, true)) { throw new RuntimeConfigurationError(AndroidBundle.message("not.activity.subclass.error", ACTIVITY_CLASS)); } - if (!isActivityLaunchable(facet.getModule(), c)) { + + final Activity activity = AndroidDomUtil.getActivityDomElementByClass(facet.getModule(), c); + if (activity == null) { + throw new RuntimeConfigurationError(AndroidBundle.message("activity.not.declared.in.manifest", c.getName())); + } + if (!isActivityLaunchable(activity)) { throw new RuntimeConfigurationError(AndroidBundle.message("activity.not.launchable.error", AndroidUtils.LAUNCH_ACTION_NAME)); } } @@ -170,13 +174,10 @@ public class AndroidRunConfiguration extends AndroidRunConfigurationBase impleme return new MyApplicationLauncher(activityToLaunch); } - private static boolean isActivityLaunchable(@NotNull Module module, PsiClass c) { - Activity activity = AndroidDomUtil.getActivityDomElementByClass(module, c); - if (activity != null) { - for (IntentFilter filter : activity.getIntentFilters()) { - if (AndroidDomUtil.containsAction(filter, AndroidUtils.LAUNCH_ACTION_NAME)) { - return true; - } + private static boolean isActivityLaunchable(Activity activity) { + for (IntentFilter filter : activity.getIntentFilters()) { + if (AndroidDomUtil.containsAction(filter, AndroidUtils.LAUNCH_ACTION_NAME)) { + return true; } } return false;