diff options
author | Dominik Schürmann <dominik@dominikschuermann.de> | 2015-03-02 18:20:31 +0100 |
---|---|---|
committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2015-03-02 18:20:31 +0100 |
commit | 1861415d77f46a466a0ae654ee72f5768f1eed14 (patch) | |
tree | 107be8f41010d70e4165e1289d6a570640a42b7b /src/main | |
parent | ab17ae851218cfb5e98ab69dc7e55cd30b14faa3 (diff) | |
parent | 87bfc0ab80eda87e5212a4c00e8b66fd921fadf1 (diff) | |
download | openpgp-api-1861415d77f46a466a0ae654ee72f5768f1eed14.tar.gz openpgp-api-1861415d77f46a466a0ae654ee72f5768f1eed14.tar.bz2 openpgp-api-1861415d77f46a466a0ae654ee72f5768f1eed14.zip |
Merge branch 'master' of https://github.com/open-keychain/openpgp-api-lib
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/org/openintents/openpgp/util/OpenPgpListPreference.java | 105 |
1 files changed, 56 insertions, 49 deletions
diff --git a/src/main/java/org/openintents/openpgp/util/OpenPgpListPreference.java b/src/main/java/org/openintents/openpgp/util/OpenPgpListPreference.java index 31ba97c..4bad35a 100644 --- a/src/main/java/org/openintents/openpgp/util/OpenPgpListPreference.java +++ b/src/main/java/org/openintents/openpgp/util/OpenPgpListPreference.java @@ -60,6 +60,7 @@ public class OpenPgpListPreference extends DialogPreference { public OpenPgpListPreference(Context context, AttributeSet attrs) { super(context, attrs); + populateExistingProviderList(); } public OpenPgpListPreference(Context context) { @@ -79,55 +80,8 @@ public class OpenPgpListPreference extends DialogPreference { @Override protected void onPrepareDialogBuilder(Builder builder) { - mList.clear(); - - // add "none"-entry - mList.add(0, new OpenPgpProviderEntry("", - getContext().getString(R.string.openpgp_list_preference_none), - getContext().getResources().getDrawable(R.drawable.ic_action_cancel_launchersize))); - - // add all additional (legacy) providers - mList.addAll(mLegacyList); - - // search for OpenPGP providers... - ArrayList<OpenPgpProviderEntry> providerList = new ArrayList<OpenPgpProviderEntry>(); - Intent intent = new Intent(OpenPgpApi.SERVICE_INTENT); - List<ResolveInfo> resInfo = getContext().getPackageManager().queryIntentServices(intent, 0); - if (!resInfo.isEmpty()) { - for (ResolveInfo resolveInfo : resInfo) { - if (resolveInfo.serviceInfo == null) - continue; - - String packageName = resolveInfo.serviceInfo.packageName; - String simpleName = String.valueOf(resolveInfo.serviceInfo.loadLabel(getContext() - .getPackageManager())); - Drawable icon = resolveInfo.serviceInfo.loadIcon(getContext().getPackageManager()); - if (!PROVIDER_BLACKLIST.contains(packageName)) { - providerList.add(new OpenPgpProviderEntry(packageName, simpleName, icon)); - } - } - } - - if (providerList.isEmpty()) { - // add install links if provider list is empty - resInfo = getContext().getPackageManager().queryIntentActivities - (MARKET_INTENT, 0); - for (ResolveInfo resolveInfo : resInfo) { - Intent marketIntent = new Intent(MARKET_INTENT); - marketIntent.setPackage(resolveInfo.activityInfo.packageName); - Drawable icon = resolveInfo.activityInfo.loadIcon(getContext().getPackageManager()); - String marketName = String.valueOf(resolveInfo.activityInfo.applicationInfo - .loadLabel(getContext().getPackageManager())); - String simpleName = String.format(getContext().getString(R.string - .openpgp_install_openkeychain_via), marketName); - mList.add(new OpenPgpProviderEntry(OPENKEYCHAIN_PACKAGE, simpleName, - icon, marketIntent)); - } - } else { - // add provider - mList.addAll(providerList); - } + populateExistingProviderList(); // Init ArrayAdapter with OpenPGP Providers ListAdapter adapter = new ArrayAdapter<OpenPgpProviderEntry>(getContext(), @@ -233,7 +187,7 @@ public class OpenPgpListPreference extends DialogPreference { public String getEntryByValue(String packageName) { for (OpenPgpProviderEntry app : mList) { - if (app.packageName.equals(packageName)) { + if (app.packageName.equals(packageName) && app.intent == null) { return app.simpleName; } } @@ -241,6 +195,59 @@ public class OpenPgpListPreference extends DialogPreference { return null; } + private void populateExistingProviderList() + { + mList.clear(); + + // add "none"-entry + mList.add(0, new OpenPgpProviderEntry("", + getContext().getString(R.string.openpgp_list_preference_none), + getContext().getResources().getDrawable(R.drawable.ic_action_cancel_launchersize))); + + // add all additional (legacy) providers + mList.addAll(mLegacyList); + + // search for OpenPGP providers... + ArrayList<OpenPgpProviderEntry> providerList = new ArrayList<OpenPgpProviderEntry>(); + Intent intent = new Intent(OpenPgpApi.SERVICE_INTENT); + List<ResolveInfo> resInfo = getContext().getPackageManager().queryIntentServices(intent, 0); + if (!resInfo.isEmpty()) { + for (ResolveInfo resolveInfo : resInfo) { + if (resolveInfo.serviceInfo == null) + continue; + + String packageName = resolveInfo.serviceInfo.packageName; + String simpleName = String.valueOf(resolveInfo.serviceInfo.loadLabel(getContext() + .getPackageManager())); + Drawable icon = resolveInfo.serviceInfo.loadIcon(getContext().getPackageManager()); + + if (!PROVIDER_BLACKLIST.contains(packageName)) { + providerList.add(new OpenPgpProviderEntry(packageName, simpleName, icon)); + } + } + } + + if (providerList.isEmpty()) { + // add install links if provider list is empty + resInfo = getContext().getPackageManager().queryIntentActivities + (MARKET_INTENT, 0); + for (ResolveInfo resolveInfo : resInfo) { + Intent marketIntent = new Intent(MARKET_INTENT); + marketIntent.setPackage(resolveInfo.activityInfo.packageName); + Drawable icon = resolveInfo.activityInfo.loadIcon(getContext().getPackageManager()); + String marketName = String.valueOf(resolveInfo.activityInfo.applicationInfo + .loadLabel(getContext().getPackageManager())); + String simpleName = String.format(getContext().getString(R.string + .openpgp_install_openkeychain_via), marketName); + mList.add(new OpenPgpProviderEntry(OPENKEYCHAIN_PACKAGE, simpleName, + icon, marketIntent)); + } + } else { + // add provider + mList.addAll(providerList); + } + } + private static class OpenPgpProviderEntry { private String packageName; private String simpleName; |