diff --git a/src/org/geometerplus/android/fbreader/DictionaryUtil.java b/src/org/geometerplus/android/fbreader/DictionaryUtil.java index 581b9e658..6b66b8f06 100644 --- a/src/org/geometerplus/android/fbreader/DictionaryUtil.java +++ b/src/org/geometerplus/android/fbreader/DictionaryUtil.java @@ -96,7 +96,7 @@ public abstract class DictionaryUtil { for (Map.Entry entry : infos().entrySet()) { final PackageInfo info = entry.getKey(); if (!entry.getValue() || - PackageUtil.canBeStarted(context, getDictionaryIntent(info, "test"))) { + PackageUtil.canBeStarted(context, getDictionaryIntent(info, "test"), false)) { list.add(info); } } @@ -188,7 +188,7 @@ public abstract class DictionaryUtil { } public static void installDictionaryIfNotInstalled(final Activity activity) { - if (PackageUtil.canBeStarted(activity, getDictionaryIntent("test"))) { + if (PackageUtil.canBeStarted(activity, getDictionaryIntent("test"), false)) { return; } final PackageInfo dictionaryInfo = getCurrentDictionaryInfo(); diff --git a/src/org/geometerplus/android/fbreader/network/Util.java b/src/org/geometerplus/android/fbreader/network/Util.java index fb0178a5b..ab77a69f0 100644 --- a/src/org/geometerplus/android/fbreader/network/Util.java +++ b/src/org/geometerplus/android/fbreader/network/Util.java @@ -42,7 +42,7 @@ abstract class Util implements UserRegistrationConstants { "android.fbreader.action.NETWORK_LIBRARY_SMS_REFILLING"; private static boolean testService(Activity activity, String action, String url) { - return url != null && PackageUtil.canBeStarted(activity, new Intent(action, Uri.parse(url))); + return url != null && PackageUtil.canBeStarted(activity, new Intent(action, Uri.parse(url)), true); } static boolean isRegistrationSupported(Activity activity, INetworkLink link) { @@ -59,7 +59,7 @@ abstract class Util implements UserRegistrationConstants { REGISTRATION_ACTION, Uri.parse(link.getUrlInfo(INetworkLink.URL_SIGN_UP).URL) ); - if (PackageUtil.canBeStarted(activity, intent)) { + if (PackageUtil.canBeStarted(activity, intent, true)) { activity.startActivityForResult(new Intent( REGISTRATION_ACTION, Uri.parse(link.getUrlInfo(INetworkLink.URL_SIGN_UP).URL) @@ -109,7 +109,7 @@ abstract class Util implements UserRegistrationConstants { intent.putExtra(entry.getKey(), entry.getValue()); } } - if (PackageUtil.canBeStarted(activity, intent)) { + if (PackageUtil.canBeStarted(activity, intent, true)) { activity.startActivity(intent); } } catch (ActivityNotFoundException e) { diff --git a/src/org/geometerplus/android/util/PackageUtil.java b/src/org/geometerplus/android/util/PackageUtil.java index 138c1d0a1..6dff7c844 100644 --- a/src/org/geometerplus/android/util/PackageUtil.java +++ b/src/org/geometerplus/android/util/PackageUtil.java @@ -54,18 +54,20 @@ public abstract class PackageUtil { public static boolean isPluginInstalled(Activity activity, String pkg) { return canBeStarted( activity, - new Intent("android.fbreader.action.TEST", homeUri(pkg)) + new Intent("android.fbreader.action.TEST", homeUri(pkg)), + true ); } public static boolean isPluginInstalled(Activity activity, String pkg, String version) { return canBeStarted( activity, - new Intent("android.fbreader.action.TEST", homeUri(pkg, version)) + new Intent("android.fbreader.action.TEST", homeUri(pkg, version)), + true ); } - public static boolean canBeStarted(Context context, Intent intent) { + public static boolean canBeStarted(Context context, Intent intent, boolean checkSignature) { final PackageManager manager = context.getApplicationContext().getPackageManager(); final ResolveInfo info = manager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY); @@ -76,6 +78,9 @@ public abstract class PackageUtil { if (activityInfo == null) { return false; } + if (!checkSignature) { + return true; + } return PackageManager.SIGNATURE_MATCH == manager.checkSignatures(context.getPackageName(), activityInfo.packageName);