aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
authorrsudev <rasch@munin-soft.de>2013-06-27 13:03:42 +0200
committerrsudev <rasch@munin-soft.de>2013-06-27 13:03:42 +0200
commitcb90fff0100a40bdefae6b57a6b12e9c113b641f (patch)
tree6f225a634e1f831cddc87df5d884e96607b96c44 /main/src
parentb01b3c3514f1249b393907926784cd078f200d84 (diff)
downloadcgeo-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.java2
-rw-r--r--main/src/cgeo/geocaching/utils/ProcessUtils.java20
-rw-r--r--main/src/cgeo/geocaching/utils/TranslationUtils.java2
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;