diff --git a/lib/app.php b/lib/app.php
index 54f16d6bdcd125f03193c552d8b82d611f5cd7d3..ca256ed1aaaf36748b3f4fedaef99fdd2cddb74a 100644
--- a/lib/app.php
+++ b/lib/app.php
@@ -294,6 +294,23 @@ class OC_App{
 		return true;
 	}
 
+	/**
+	 * @brief Get the navigation entries for the $app
+	 * @param string $app app
+	 * @return array of the $data added with addNavigationEntry
+	 */
+	public static function getAppNavigationEntries($app) {
+		if(is_file(self::getAppPath($app).'/appinfo/app.php')) {
+			$save = self::$navigation;
+			self::$navigation = array();
+			require $app.'/appinfo/app.php';
+			$app_entries = self::$navigation;
+			self::$navigation = $save;
+			return $app_entries;
+		}
+		return array();
+	}
+
 	/**
 	 * @brief gets the active Menu entry
 	 * @return string id or empty string
diff --git a/lib/base.php b/lib/base.php
index 3de38258d0316902021e9c5935e649ce3f4dc3cd..c60a97100f42859fa5d4a466f078c33d533f74e1 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -557,6 +557,7 @@ class OC {
 
 		if (!self::$CLI) {
 			try {
+				OC_App::loadApps();
 				OC::getRouter()->match(OC_Request::getPathInfo());
 				return;
 			} catch (Symfony\Component\Routing\Exception\ResourceNotFoundException $e) {
diff --git a/settings/ajax/navigationdetect.php b/settings/ajax/navigationdetect.php
index 607c0e873f9dcff5acc2de16781850b42049cf98..7f961eb9bc52d73ca8631b48aa6b597d6945be0b 100644
--- a/settings/ajax/navigationdetect.php
+++ b/settings/ajax/navigationdetect.php
@@ -6,10 +6,7 @@ OCP\JSON::callCheck();
 $app = $_GET['app'];
 $app = OC_App::cleanAppId($app);
 
-//load the one app and see what it adds to the navigation
-OC_App::loadApp($app);
-
-$navigation = OC_App::getNavigation();
+$navigation = OC_App::getAppNavigationEntries($app);
 
 $navIds = array();
 foreach ($navigation as $nav) {