1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-05 02:39:23 +02:00

signature will not be checked for dictionaries :)

This commit is contained in:
Nikolay Pultsin 2011-03-18 23:48:15 +00:00
parent b1829640ce
commit cd69a5ee98
3 changed files with 13 additions and 8 deletions

View file

@ -96,7 +96,7 @@ public abstract class DictionaryUtil {
for (Map.Entry<PackageInfo,Boolean> entry : infos().entrySet()) { for (Map.Entry<PackageInfo,Boolean> entry : infos().entrySet()) {
final PackageInfo info = entry.getKey(); final PackageInfo info = entry.getKey();
if (!entry.getValue() || if (!entry.getValue() ||
PackageUtil.canBeStarted(context, getDictionaryIntent(info, "test"))) { PackageUtil.canBeStarted(context, getDictionaryIntent(info, "test"), false)) {
list.add(info); list.add(info);
} }
} }
@ -188,7 +188,7 @@ public abstract class DictionaryUtil {
} }
public static void installDictionaryIfNotInstalled(final Activity activity) { public static void installDictionaryIfNotInstalled(final Activity activity) {
if (PackageUtil.canBeStarted(activity, getDictionaryIntent("test"))) { if (PackageUtil.canBeStarted(activity, getDictionaryIntent("test"), false)) {
return; return;
} }
final PackageInfo dictionaryInfo = getCurrentDictionaryInfo(); final PackageInfo dictionaryInfo = getCurrentDictionaryInfo();

View file

@ -42,7 +42,7 @@ abstract class Util implements UserRegistrationConstants {
"android.fbreader.action.NETWORK_LIBRARY_SMS_REFILLING"; "android.fbreader.action.NETWORK_LIBRARY_SMS_REFILLING";
private static boolean testService(Activity activity, String action, String url) { 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) { static boolean isRegistrationSupported(Activity activity, INetworkLink link) {
@ -59,7 +59,7 @@ abstract class Util implements UserRegistrationConstants {
REGISTRATION_ACTION, REGISTRATION_ACTION,
Uri.parse(link.getUrlInfo(INetworkLink.URL_SIGN_UP).URL) Uri.parse(link.getUrlInfo(INetworkLink.URL_SIGN_UP).URL)
); );
if (PackageUtil.canBeStarted(activity, intent)) { if (PackageUtil.canBeStarted(activity, intent, true)) {
activity.startActivityForResult(new Intent( activity.startActivityForResult(new Intent(
REGISTRATION_ACTION, REGISTRATION_ACTION,
Uri.parse(link.getUrlInfo(INetworkLink.URL_SIGN_UP).URL) Uri.parse(link.getUrlInfo(INetworkLink.URL_SIGN_UP).URL)
@ -109,7 +109,7 @@ abstract class Util implements UserRegistrationConstants {
intent.putExtra(entry.getKey(), entry.getValue()); intent.putExtra(entry.getKey(), entry.getValue());
} }
} }
if (PackageUtil.canBeStarted(activity, intent)) { if (PackageUtil.canBeStarted(activity, intent, true)) {
activity.startActivity(intent); activity.startActivity(intent);
} }
} catch (ActivityNotFoundException e) { } catch (ActivityNotFoundException e) {

View file

@ -54,18 +54,20 @@ public abstract class PackageUtil {
public static boolean isPluginInstalled(Activity activity, String pkg) { public static boolean isPluginInstalled(Activity activity, String pkg) {
return canBeStarted( return canBeStarted(
activity, 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) { public static boolean isPluginInstalled(Activity activity, String pkg, String version) {
return canBeStarted( return canBeStarted(
activity, 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 PackageManager manager = context.getApplicationContext().getPackageManager();
final ResolveInfo info = final ResolveInfo info =
manager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY); manager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
@ -76,6 +78,9 @@ public abstract class PackageUtil {
if (activityInfo == null) { if (activityInfo == null) {
return false; return false;
} }
if (!checkSignature) {
return true;
}
return return
PackageManager.SIGNATURE_MATCH == PackageManager.SIGNATURE_MATCH ==
manager.checkSignatures(context.getPackageName(), activityInfo.packageName); manager.checkSignatures(context.getPackageName(), activityInfo.packageName);