diff options
| author | rsudev <rasch@munin-soft.de> | 2013-06-27 13:03:42 +0200 |
|---|---|---|
| committer | rsudev <rasch@munin-soft.de> | 2013-06-27 13:03:42 +0200 |
| commit | cb90fff0100a40bdefae6b57a6b12e9c113b641f (patch) | |
| tree | 6f225a634e1f831cddc87df5d884e96607b96c44 /main/src | |
| parent | b01b3c3514f1249b393907926784cd078f200d84 (diff) | |
| download | cgeo-cb90fff0100a40bdefae6b57a6b12e9c113b641f.zip cgeo-cb90fff0100a40bdefae6b57a6b12e9c113b641f.tar.gz cgeo-cb90fff0100a40bdefae6b57a6b12e9c113b641f.tar.bz2 | |
Fixes #2923, Menu slow to open in cache details
Removed costly scan of installed packages for launchable apps
Diffstat (limited to 'main/src')
| -rw-r--r-- | main/src/cgeo/geocaching/apps/AbstractApp.java | 2 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/ProcessUtils.java | 20 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/TranslationUtils.java | 2 |
3 files changed, 21 insertions, 3 deletions
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; |
