From cb90fff0100a40bdefae6b57a6b12e9c113b641f Mon Sep 17 00:00:00 2001 From: rsudev Date: Thu, 27 Jun 2013 13:03:42 +0200 Subject: Fixes #2923, Menu slow to open in cache details Removed costly scan of installed packages for launchable apps --- main/src/cgeo/geocaching/apps/AbstractApp.java | 2 +- main/src/cgeo/geocaching/utils/ProcessUtils.java | 20 +++++++++++++++++++- main/src/cgeo/geocaching/utils/TranslationUtils.java | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) (limited to 'main/src') diff --git a/main/src/cgeo/geocaching/apps/AbstractApp.java b/main/src/cgeo/geocaching/apps/AbstractApp.java index f3715f3..4d7abde 100644 --- a/main/src/cgeo/geocaching/apps/AbstractApp.java +++ b/main/src/cgeo/geocaching/apps/AbstractApp.java @@ -28,7 +28,7 @@ public abstract class AbstractApp implements App { @Override public boolean isInstalled() { - if (StringUtils.isNotEmpty(packageName) && ProcessUtils.isInstalled(packageName)) { + if (StringUtils.isNotEmpty(packageName) && ProcessUtils.isLaunchable(packageName)) { return true; } return MainActivity.isIntentAvailable(intent); diff --git a/main/src/cgeo/geocaching/utils/ProcessUtils.java b/main/src/cgeo/geocaching/utils/ProcessUtils.java index 1c05e84..85cedc5 100644 --- a/main/src/cgeo/geocaching/utils/ProcessUtils.java +++ b/main/src/cgeo/geocaching/utils/ProcessUtils.java @@ -14,8 +14,26 @@ public final class ProcessUtils { // utility class } + /** + * Preferred method to detect the availability of an external app + * + * @param packageName + * @return + */ + public static boolean isLaunchable(final String packageName) { + return getLaunchIntent(packageName) != null; + } + + /** + * Checks whether a launch intent is available or if the package is just installed + * This function is relatively costly, so if you know that the package in question has + * a launch intent, use isLaunchable() instead. + * + * @param packageName + * @return + */ public static boolean isInstalled(final String packageName) { - return (getLaunchIntent(packageName) != null) || hasPackageInstalled(packageName); + return isLaunchable(packageName) || hasPackageInstalled(packageName); } /** diff --git a/main/src/cgeo/geocaching/utils/TranslationUtils.java b/main/src/cgeo/geocaching/utils/TranslationUtils.java index 05045ee..1224f7e 100644 --- a/main/src/cgeo/geocaching/utils/TranslationUtils.java +++ b/main/src/cgeo/geocaching/utils/TranslationUtils.java @@ -35,7 +35,7 @@ public final class TranslationUtils { private static String buildTranslationURI(final String toLang, final String text) { String content = Network.encode(text); // the app works better without the "+", the website works better with "+", therefore assume using the app if installed - if (ProcessUtils.isInstalled(TRANSLATION_APP)) { + if (ProcessUtils.isLaunchable(TRANSLATION_APP)) { content = content.replace("+", "%20"); } return translationWebsite + translationForceClassicMode + translationAutoSelect + translationFieldSeparator + toLang + translationFieldSeparator + content; -- cgit v1.1